【发布时间】:2020-01-05 22:42:05
【问题描述】:
我的反应一直运行良好,但我决定在 Edge 和 Chrome 上尝试它,并且在这两种浏览器上加载时都会出现语法错误。该应用程序是使用 create-react-app 编写的,当我发现它无法在 Windows 上运行时,我执行了以下操作:
- 已安装
react-app-polyfill - 更新了我在
package.json中的浏览器列表以包括ie 11和last 1 edge - 在
index.js中导入了react-app-polyfill/stable和react-app-polyfill/ie11 - 已删除
node_modules/.cache
并重新启动 npm start 但 Edge 和 IE 11 开发工具控制台都显示语法错误:
但出于某种奇怪的原因,它们显示不同的行号。无奈之下,我还尝试删除所有node_modules 并再次运行npm install。仍然没有帮助。
如果我进行生产构建和服务,一些页面似乎可以工作,而另一些页面在 IE 和 Edge 中会出现错误,抱怨尝试在 null 上执行 map 或 length。
【问题讨论】:
-
安装“es-check”并针对您编译的构建文件夹运行它。它会告诉你哪个块不符合 ES5。它可能需要一些挖掘,但很可能是一个 npm 包决定放弃对 IE11 的支持并将其代码库移至 ES6。从那里你必须改变你的 webpack 配置,让“babel-loader”转译那个特定的 node_module。
-
这是一个使用
es-check的示例脚本:github.com/mattcarlotta/SJSITApp/blob/master/client/… 以及如何包含(从node_modules中排除)需要转译的特定包(在我的情况下,d3-scale是ES6,所以在生产中,我指定babel-loader包含它):github.com/mattcarlotta/SJSITApp/blob/master/client/config/… -
您的
react-scripts是什么版本?react-scripts3.3.0 及更高版本似乎存在问题。您可以在 GitHub 中找到许多问题报告,例如:github.com/facebook/create-react-app/issues/8197、github.com/facebook/create-react-app/issues/8195。它仍然可以与react-scripts@3.2.0一起使用。您可以尝试恢复到 3.2.0 作为解决方法。 -
@MattCarlotta es-check 抱怨 build/service-worker.js。我什至不知道这是从哪里来的。
-
移除服务工作者。检查主
index.js并取消注册和/或删除其导入。这是一个示例树结构(serviceWorker.js位于根):github.com/mattcarlotta/cra-single-bundle/tree/master/src,这是您要从index.js中删除的行:github.com/mattcarlotta/cra-single-bundle/blob/master/src/…(L5 和 L12)
标签: javascript reactjs internet-explorer