【问题标题】:Node red Cannot read property 'Symbol(Symbol.iterator)' of undefined节点红色无法读取未定义的属性'Symbol(Symbol.iterator)'
【发布时间】:2017-04-23 11:30:59
【问题描述】:

我在一个我不太了解的小程序上遇到了这个问题(我对node red有点陌生),代码是

var profile = msg.user.profile;
var cart    = profile.cart = profile.cart || [];
var search  = profile.search;
var id      = msg.payload.substring(8);

for (let item of search){
  if ( item.id != id) continue;
  cart.push(item);
  msg.payload = item;
}

并且完整的错误是TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined 在行for (let item of search){。 我做了一些研究,发现这个错误通常是由于未定义的东西造成的,但我真的不明白如何解决这个问题。

【问题讨论】:

    标签: javascript node-red


    【解决方案1】:

    我看到你正在使用 let 语法; let 语法仅适用于 ecmascript 2015 up(javascript 版本),所以基本上你需要做的就是像这样重写你的代码

    var profile = msg.user.profile;
    var cart    = profile.cart = profile.cart || [];
    var search  = profile.search;
    var id      = msg.payload.substring(8);
    
    // assuming that profile.search is an array
    for (var i = 0 ; i < search.length ; i++){
      var item = search[i];
      if ( item.id != id) continue;
      cart.push(item);
      msg.payload = item;
    }
    
    // if it is an object, then you could loop through its props
    for (var prop in search ){
       var item = search[prop];
       if ( item.id != id) continue;
       cart.push(item);
       msg.payload = item;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2017-06-20
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多