反应应用:在Internet Explorer 11上运行的问题

时间:2017-07-20 02:24:09

标签: javascript node.js reactjs internet-explorer npm

我有一个反应应用程序。在Windows 10上,它在Chrome和Internet Explorer 11上运行良好。但在Windows 7上,它仅适用于Chrome,而不适用于Internet Explorer 11。

我收到以下错误:

SCRIPT438: Object doesn't support property or method 'assign'

通过我的研究,这看起来像IE 11的兼容性问题(虽然不确定为什么它适用于Windows 10)。

据我所知,需要使用有关polyfill / transfill(?)/ babel的内容。但这里有一个我最大的问题:

我有一个包含所有站点代码的bundle.js文件。这是我自己的代码和NPM节点模块的混合。如果问题与我的代码有关,那么我可以添加导入行并更改我的代码。但错误来自npm节点模块。我无法编辑这些文件。如何在不触及这些文件的情况下解决此Object.assign问题?

我并不熟悉浏览器兼容性内容,所以我很困难

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

最好的长期/社区友好解决方案可能是确定导致问题的模块,并向模块的维护者提出问题。但是,如果您需要立即修复,或者如果您无法确定导致问题的模块,则可以在加载违规模块之前尝试包含Object.assign polyfill。

polyfill是一段代码,用于为尚未支持给定功能的浏览器手动定义功能(如Object.assign)。在这种情况下,您可以包含类似this module之类的内容,方法是将其导入到其他模块之前的捆绑包中,或者下载并提供该polyfill文件并在HTML文档中加载<script>标记在加载bundle.js文件之前。这样,在浏览器遇到调用Object.assign的模块代码之前,将由polyfill定义Object.assign。

答案 1 :(得分:1)

另一个使用“ create-react-app”解决偷窥的方法,并且无法访问webpack配置文件,请执行以下步骤:

npm i babel-polyfill

然后:

// index.jsx 导入“ babel-polyfill”;

Here is a good article over this approach.