【发布时间】:2019-09-24 06:39:42
【问题描述】:
我正在使用 Babel 转译我的 ES7 代码。我的设置有点奇怪,因为我需要转译一些 node_modules。我不断收到此错误:
SCRIPT5022:抛出异常但未捕获
需要-object-coercible.js (4,24)
【问题讨论】:
标签: internet-explorer webpack babeljs core-js
我正在使用 Babel 转译我的 ES7 代码。我的设置有点奇怪,因为我需要转译一些 node_modules。我不断收到此错误:
SCRIPT5022:抛出异常但未捕获
需要-object-coercible.js (4,24)
【问题讨论】:
标签: internet-explorer webpack babeljs core-js
我认为我的配置有误,并且我正在转译不正确的模块(因为您不应该转译 core-js),但经过一番挖掘,我发现问题出在我的代码中。
我在ParentNode.children 上打电话给Array.from()。 from() 应该在可迭代的输入上调用,在 Chrome 中,children 属性总是返回一个 HTMLCollection,它是可迭代的。然而,在 IE 中,SVG 元素的children 是undefined,这会引发require-object-coercible 中的错误。这使我的代码在 Chrome 上运行良好,但在 IE11 中却不行,即使在正确的 polyfill 之后也是如此。
解决方案是在调用from() 之前简单地检查children。
【讨论】:
为了记录,我遇到了同样的问题。只有在调试调用堆栈之后,我才能找到它的来源。遇到同样问题的朋友,去IE11调试器,把异常行为改成“break on unhandled exceptions”,看看调用栈,会帮你找到根源。
对我来说,这是对 Object.keys(window.XXX) 的调用,其中 window.XXX 未定义。
【讨论】: