IE11 中的 require-object-coercible 抛出异常但未捕获异常

Exception thrown and not caught at require-object-coercible in IE11

我正在使用 Babel 来转换我的 ES7 代码。我的设置有点奇怪,因为我需要转译一些 node_modules。我不断收到此错误:

SCRIPT5022: Exception thrown and not caught
require-object-coercible.js (4,24)

我以为我的配置有误,我正在转译不正确的模块(因为你不应该转译 core-js),但经过一番深入研究,我发现问题出在我的代码中。

我正在打电话 Array.from() on ParentNode.childrenfrom() 应该在可迭代输入上调用,在 Chrome 中,children 属性 总是 returns 一个可迭代的 HTMLCollection。然而,在 IE 中,SVG 元素的 childrenundefined,这会引发 require-object-coercible 中的错误。这使我的代码在 Chrome 上工作正常,但在 IE11 中却不行,即使在正确的 polyfills 之后也是如此。

解决方案是在调用 from() 之前简单地对 children 执行检查。

郑重声明,我遇到了同样的问题。直到调试了调用栈后,我才找到它的来源。对于遇到同样问题的人,去IE11调试器,将异常行为更改为“break on unhandled exceptions”,然后查看调用堆栈,它会帮助你找到根源。

对我来说,这是对 Object.keys(window.XXX) 的调用,其中 window.XXX 未定义。