我创建了创建反应的应用程序内今天一个新的项目。该生产版本未在IE11运行良好,控制台显示以下错误:
SCRIPT1010: Expected identifier
该生产线它指向我main.js里面:
{var n=e&&e.__esModule?function(){return e.default}:function(){return 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为好。是,我需要有polyfills?
好像polyfills的顺序也是一个因素。有在这个问题几种解决方案,可以帮助解决这个问题。 https://github.com/facebook/react/issues/8379
这是我如何固定它。不要忘记先生响应“丹·阿布拉莫夫”帮我在这。
所以,问题是默认的应用程序正在对IE7渲染,是不是只在IE浏览器IE11 / EDGE支持transpiled构建。所以,我不得不提一下元信息,让浏览器知道预期的浏览器IE11 /边缘。在您的index.html的head
部分补充一点:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
现在,当我得到了,你还着y看到一些错误控制台,上面写着:
SCRIPT5009: 'Set' is undefined
不用担心,还有周围的方式,以及:https://reactjs.org/docs/javascript-environment-requirements.html
这里是我的混帐丹讨论的问题:https://github.com/facebook/create-react-app/issues/4255
您需要包括巴贝尔,polyfills和transpile下降到ES5的IE11工作。
反应16依赖于集合类型的地图和设置。如果你支持旧的浏览器和设备可能没有提供这些本身(如IE <11),或不符合规定的实施方式(例如IE 11),考虑在您的捆绑应用程序的全局填充工具,如核心JS还是巴别-polyfill。
https://reactjs.org/docs/javascript-environment-requirements.html
您可以通过像这样的WebPack包括填充工具
entry: {
app: [
'babel-polyfill',
'react-hot-loader/patch',
'react',
'react-dom',
'./src/index.web.tsx',
]
},
这是IE问题,而不是反应框架。
问题是“默认”是在IE浏览器中的保留字
您可以重命名“默认”功能,以新的名称或使用JavaScript函数为:
return e["default"]