ReactJS - SCRIPT1010:预期标识符 - 生产版本未在 IE11 上运行

Posted

技术标签:

【中文标题】ReactJS - SCRIPT1010:预期标识符 - 生产版本未在 IE11 上运行【英文标题】:ReactJS - SCRIPT1010: Expected identifier - Production build not running on IE11 【发布时间】:2018-09-13 22:42:26 【问题描述】:

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

SCRIPT1010: Expected identifier

它在我的 main.js 中指向的行:

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

错误在上面的 e.(default) 之后。我的包 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 吗?

【问题讨论】:

你是怎么处理这个问题的? @Vishal 我正面临这个问题。解决了吗?有关此的任何更新 @SivaRajini 在下面添加了一个答案,解释了如何解决这个问题。请检查。 【参考方案1】:

您需要包含 babel-polyfills 并转译为 ES5 才能使 IE11 正常工作。

React 16 依赖于集合类型 Map 和 Set。如果你支持 可能尚未原生提供这些功能的旧浏览器和设备 (例如 IE

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',
      ]
,

【讨论】:

我正在使用 create-react-app。我应该弹出 webpack 吗? 可以将上面的polyfill添加到webpack中【参考方案2】:

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

【讨论】:

【参考方案3】:

这是 IE 问题,不是 react 框架。

“default”在IE上是保留字的问题

您可以将“默认”函数重命名为新名称或使用 javascript 函数:

return e["default"]

【讨论】:

【参考方案4】:

这是我修复它的方法。不要忘记 React 先生“Dan Abramov”在这方面帮助了我。

所以问题是默认情况下,应用程序在 IE7 上呈现,而不仅仅是在支持转译构建的 IE IE11/EDGE 上。所以我不得不提到元信息让浏览器知道预期的浏览器是 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

这是我在 git 上与 Dan 讨论的问题:https://github.com/facebook/create-react-app/issues/4255

【讨论】:

为我工作

以上是关于ReactJS - SCRIPT1010:预期标识符 - 生产版本未在 IE11 上运行的主要内容,如果未能解决你的问题,请参考以下文章

预期 ReactJS 中的赋值或函数调用错误 [重复]

身份验证状态持久性未按预期工作 ReactJS

什么是 ReactJS 中的同构渲染方式

如何用reactjs构建一个完整的前端页面

ReactJs设置css样式

预期的标识符或“”和预期的非限定 ID