我今天用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吗?
4条答案
按热度按时间dw1jzc5e1#
这是我如何修复它。不要忘记先生React“丹阿布拉莫夫”帮助我在这一点上。
因此,问题是默认情况下,应用程序在IE7上呈现,而不是在支持transpiled构建的唯一IE IE11/EDGE上呈现。因此,我必须提到 meta信息,让浏览器知道预期的浏览器是IE11/edge。将此添加到index.html的
head
部分:现在,正如我所得到的,您可能还看到一些错误在控制台中,如下所示:
不用担心,还有一种方法可以解决这个问题:https://reactjs.org/docs/javascript-environment-requirements.html
下面是我和Dan讨论git的问题:https://github.com/facebook/create-react-app/issues/4255
uyhoqukh2#
似乎多边形填充的顺序也是一个因素。在这个问题中有几个解决方案可以帮助解决这个问题。https://github.com/facebook/react/issues/8379
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,如下所示
jgzswidk4#
这是IE的问题,不是react框架。
IE中“default”是保留字问题
您可以将“default”函数重命名为新名称,或者使用javascript函数,如下所示: