【问题标题】:Object doesn't support property or method 'jscomp_symbol_iterator0'对象不支持属性或方法“jscomp_symbol_iterator0”
【发布时间】:2016-08-20 04:05:32
【问题描述】:

我正在使用 babel 6.7 构建单页 React.js 网络应用程序。我试图包含所有相关的 polyfill,例如babel-polyfill 使其与 ES5 浏览器兼容。即便如此,我还是时不时地遇到这样的 javascript 错误

Object doesn't support property or method 'jscomp_symbol_iterator0'

主要来自运行 IE10+ 的 Windows 7 和 8.1 用户。

我假设这与不支持 js Symbol.iterator 有关。有没有办法可以为旧版浏览器填充它?

谢谢!

【问题讨论】:

  • 你所有的 babel 版本都是最新的吗?我看到了这方面的问题,但它们很旧
  • 是的,我刚刚更新到所有最新版本的 babel 以及所有最新的插件和 polyfill。你能告诉我你发现了哪些问题吗?我很难找到有关该主题的任何内容。

标签: javascript babeljs


【解决方案1】:

您应该添加以下“要求”语句:

require('core-js/es6/object');
require('core-js/es6/map');

【讨论】:

    【解决方案2】:

    在我的情况下,错误:

    对象不支持属性或方法'Symbol.iterator'

    指向与for 循环的ES6 语法相关的特定行。即,我有这个:

    for(let el of document.getElementsByClassName('especial-els')) { /* ... */ }
    

    而我需要做的就是将这个循环更改为“旧式”循环:

    let especialEls = document.getElementsByClassName('especial-els');
    for(let i = specialEls.length - 1; i >= 0; i--) { /* ... */ }
    

    此错误仅发生在 Edge 浏览器中(不是在 Chrome 中,也不是在 Firefox 中),尤其是仅在此 for(let i of iterator) 循环中(我有其他此类循环遍历数组并且错误未显示)。我的猜测是 document.getElementsByClassName() 返回一个“特殊”迭代器。

    【讨论】:

    • 我也遇到了这个问题,还有一个 for (var a of b) 循环。将其更改为经典的 for 循环并将我的原始 var 定义为 a = b[i] 效果很好。谢谢!
    猜你喜欢
    • 2019-07-05
    • 2015-04-14
    • 2020-09-03
    • 2015-04-09
    • 2014-01-12
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多