2017-07-25 50 views
3

當調試器被禁用不工作,我得到這個錯誤:爲...循環當遠程調試器被禁用

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

但被啓用時,我的代碼工作正常。這隻發生在Android上。 ios應用程序工作正常。

這裏是我的依賴關係:

  • 反應
  • 反應母語
  • 本土基地
  • 基64
  • 境界

這裏是代碼造成差異:

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

如果我取消註釋上面的行,我的代碼沒有調試器工作。

+0

不是一個專家在所有的話題,但是,這可能是一個可能性,禁用調試器'控制檯'沒有定義? –

+0

玩具內容?玩具是一個數組還是一個對象?普通對象不可迭代 – eden

+0

對象數組。 @EnieJakiro –

回答

0

這不是一個完整的答案,但是基於MDN documentation 您只能在迭代對象上使用for ... of ...循環。也就是說,該對象必須實現@@iterator接口。

出於某種原因,當調試正在運行的JS解釋器的行爲不同(可能是因爲當調試SDK使用不同的時候)。

編輯:似乎有與符號問題和@@迭代器在本地做出反應:https://github.com/facebook/react-native/pull/5294#issuecomment-190061913

本來這個問題存在於Android和iOS 8.x中,但被固定於iOS 9(解釋爲什麼你的代碼在那裏工作)。 Android版本似乎仍然存在一些問題。

+0

數組是可迭代的對象,並且他可以通過'for .. of ..'來迭代對象數組。' – eden

+0

@EnieJakiro如果obj [Symbol.iterator]是一個函數,並且錯誤消息清楚地聲明瞭一個對象是可迭代的它是未定義的,這不是一個函數 –

+0

嗨@Pablo,這適用於有或沒有調試器的iOS。我甚至可以訪問玩具[索引],所以我的數組對象不是問題。 –