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 上运行的主要内容,如果未能解决你的问题,请参考以下文章