Javascript 如何使我的React应用程序在Edge和IE 11上工作?

Javascript 如何使我的React应用程序在Edge和IE 11上工作?,javascript,reactjs,internet-explorer,Javascript,Reactjs,Internet Explorer,我的react一直运行良好,但我决定在Edge和Chrome上试用,在这两种浏览器上加载时都会出现语法错误。该应用程序是使用create react应用程序编写的,当我发现它无法在Windows上运行时,我执行了以下操作: 已安装react应用程序polyfill 更新了package.json中的我的浏览器列表,包括ie 11和last 1 edge 在index.js中导入react-app-polyfill/stable和react-app-polyfill/ie11 已删除node\u

我的react一直运行良好,但我决定在Edge和Chrome上试用,在这两种浏览器上加载时都会出现语法错误。该应用程序是使用create react应用程序编写的,当我发现它无法在Windows上运行时,我执行了以下操作:

  • 已安装
    react应用程序polyfill
  • 更新了
    package.json中的我的浏览器列表,包括
    ie 11
    last 1 edge
  • index.js中导入
    react-app-polyfill/stable
    react-app-polyfill/ie11
  • 已删除
    node\u modules/.cache
并重新启动
npm start
,但Edge和IE 11开发工具控制台都显示语法错误: 但由于一些奇怪的原因,它们显示了不同的行号。在绝望中,我还尝试删除所有
node\u模块
,并再次运行
npm安装
。仍然没有帮助


如果我进行生产构建并提供服务,一些页面似乎可以正常工作,而另一些页面则在IE和Edge中出现错误,抱怨试图在空值上执行
map
length

这似乎是
react scripts
版本3.3.0及更高版本的问题。您可以在GitHub中找到许多问题报告,例如:


它仍然可以使用
react-scripts@3.2.0
。您可以尝试恢复到3.2.0作为解决方案

3.3.0及更高版本的
react脚本似乎存在问题。您可以在GitHub中找到许多问题报告,例如:


它仍然可以使用
react-scripts@3.2.0
。您可以尝试恢复到3.2.0作为解决方案

安装“es check”并对编译的生成文件夹运行它。它将告诉您哪个块不符合ES5。这可能需要一些挖掘,但很可能是一个npm包决定放弃对IE11的支持,并将其代码库迁移到ES6。从这里开始,您必须更改您的网页包配置,使“babel loader”能够传输特定的node_模块。下面是一个使用
es check
的示例脚本:下面是如何包含(从
node_模块中排除)需要传输的特定包(在我的例子中,
d3标尺
是ES6,所以在生产中,我指定
babel loader
来包含它):您的
react scripts
版本是什么?似乎是
react scripts
3.3.0及更高版本的问题。您可以在GitHub中找到许多问题报告,例如:,。它仍然可以与
react一起使用-scripts@3.2.0
。您可以尝试恢复到3.2.0作为解决办法。@MattCarlotta es check抱怨构建/service-worker.js。我甚至不知道这是从哪里来的。删除服务人员。检查主
index.js
,取消注册和/或删除其导入。下面是一个示例树结构(
serviceworer.js
位于根目录下):下面是您要从
index.js
中删除的行:(L5和L12)安装“es check”并在编译的构建文件夹中运行它。它会告诉您哪个块不符合ES5。这可能需要一些挖掘,但很可能是一个npm包决定放弃对IE11的支持,并将其代码库移动到ES6。从那里开始,您必须更改您的网页包配置,以具有“babel loade”r'来传输特定的节点单元模块。下面是一个使用
es check
的示例脚本:下面是如何包含(从
节点单元模块中排除)需要传输的特定包(在我的例子中,
d3 scale
是ES6,所以在生产中,我指定
babel loader
来包含它):您的
react scripts
版本是什么?似乎是
react scripts
3.3.0及更高版本的问题。您可以在GitHub中找到许多问题报告,例如:,。它仍然可以与
react一起使用-scripts@3.2.0
。您可以尝试恢复到3.2.0作为解决办法。@MattCarlotta es check抱怨构建/service-worker.js。我甚至不知道这是从哪里来的。删除服务人员。检查主
index.js
,取消注册和/或删除其导入。下面是一个示例树结构(
serviceworer.js
位于根目录下):下面是您要从
index.js
中删除的行:(L5和L12)