Babel.js ReactJS-脚本1010:应为标识符-生产版本未在IE11上运行

2skhul33  于 2022-12-08  发布在  Babel
关注(0)|答案(4)|浏览(156)

我今天用create-react-app创建了一个新项目。生产版本在IE11上运行不正常,控制台显示以下错误:

SCRIPT1010: Expected identifier

它指向my main.js中的行:

{var n=e&&e.__esModule?function(){return e.default}:function(){return e};

错误是在上面的e.(默认)之后.我的包json是普通的:

{
  "name": "sample-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.3.1",
    "react-dom": "^16.3.1",
    "react-scripts": "1.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

奇怪的是,我的开发服务器在IE11上运行得很好,所以问题只是在生产版本上。它在Chrome上也运行得很好。我需要有polyfill吗?

dw1jzc5e

dw1jzc5e1#

这是我如何修复它。不要忘记先生React“丹阿布拉莫夫”帮助我在这一点上。
因此,问题是默认情况下,应用程序在IE7上呈现,而不是在支持transpiled构建的唯一IE IE11/EDGE上呈现。因此,我必须提到 meta信息,让浏览器知道预期的浏览器是IE11/edge。将此添加到index.html的head部分:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

现在,正如我所得到的,您可能还看到一些错误在控制台中,如下所示:

SCRIPT5009: 'Set' is undefined

不用担心,还有一种方法可以解决这个问题:https://reactjs.org/docs/javascript-environment-requirements.html
下面是我和Dan讨论git的问题:https://github.com/facebook/create-react-app/issues/4255

uyhoqukh

uyhoqukh2#

似乎多边形填充的顺序也是一个因素。在这个问题中有几个解决方案可以帮助解决这个问题。https://github.com/facebook/react/issues/8379

jei2mxaa

jei2mxaa3#

您需要包含babel-polyfills并向下传输到ES 5,以便IE11工作。
React 16依赖于集合类型Map和Set。如果您支持的旧浏览器和设备可能还没有提供这些功能(例如IE〈11)或具有不兼容的实现(例如IE 11),请考虑在捆绑的应用程序中包含全局polyfill,例如core-js或babel-polyfill。
https://reactjs.org/docs/javascript-environment-requirements.html
您可以通过webpack包含polyfill,如下所示

entry: {
      app: [
        'babel-polyfill',
        'react-hot-loader/patch',
        'react',
        'react-dom',
        './src/index.web.tsx',
      ]
},
jgzswidk

jgzswidk4#

这是IE的问题,不是react框架。
IE中“default”是保留字问题
您可以将“default”函数重命名为新名称,或者使用javascript函数,如下所示:

return e["default"]

相关问题