禁用远程调试器时 for...of 循环不起作用

Posted

技术标签:

【中文标题】禁用远程调试器时 for...of 循环不起作用【英文标题】:for...of loop not working when remote debugger is disabled 【发布时间】:2017-12-30 23:20:27 【问题描述】:

当调试器被禁用时,我得到这个错误:

undefined is not a function (evaluating '_iterator[typeof Symbol === 'function' Symbol.iterator:'@@iterator']()')

但是当它启用时,我的代码可以正常工作。这只发生在安卓上。 ios 应用运行良好。

这是我的依赖项:

反应 反应原生 本地基础 base-64 领域

下面是产生影响的代码:

for(toy of toys) 
   console.log(toy)

如果我取消注释上面的行,我的代码可以在没有调试器的情况下工作。

【问题讨论】:

根本不是该主题的专家,但是,是否有可能在禁用调试器的情况下 console 未定义? 玩具的内容? Toys 是数组还是对象?普通对象不可迭代 对象数组。 @EnieJakiro @JordiNebot 不是真的,因为它适用于 iOS。 你有没有更改任何 babel 配置?或者导入了与 babel 冲突的包 【参考方案1】:

这不是一个完整的答案,而是基于MDN documentation 您只能在可迭代对象上使用 for ... of ... 循环。即对象必须实现@@iterator接口。

由于某种原因,在调试运行的 JS 解释器时似乎表现不同(可能是因为在调试 SDK 时使用了不同的解释器)。

编辑:React Native 中的 Symbol 和 @@iterator 似乎存在问题:https://github.com/facebook/react-native/pull/5294#issuecomment-190061913

这个问题最初出现在 android 和 iOS 8.x 中,但在 iOS 9 中得到了修复(这解释了为什么您的代码在那里工作)。安卓版好像还有点问题。

【讨论】:

数组是可迭代对象,他可以用for .. of ..遍历一个对象数组 @EnieJakiro An object is iterable if obj[Symbol.iterator] is a function,并且错误信息明确指出它是未定义的,这不是一个函数 嗨@Pablo,无论有没有调试器,这都适用于iOS。我什至可以访问 Toys[index],所以我的对象数组不是问题。 @Pablo,我检查了我的 babel.rc,里面没有异常。

以上是关于禁用远程调试器时 for...of 循环不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 For Of 循环中使用对象

Node.js 远程调试不起作用

net.core 应用程序的远程调试不起作用

我可以在脚本中完全禁用“调试器”吗?

使用 git deploy 进行 Azure 网站远程调试不起作用

从 Docker 容器内部使用 XDebug 进行远程调试不起作用