节点红色 无法读取未定义的 属性 'Symbol(Symbol.iterator)'

Node red Cannot read property 'Symbol(Symbol.iterator)' of undefined

我在一个我不太了解的小程序上遇到了这个问题(我对 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 undefinedfor (let item of search){。 我做了一些研究,发现这个错误通常是由于未定义的东西引起的,但我真的不明白如何解决这个问题。

我看到你在使用 let 语法; let 语法仅适用于 ecmascript 2015(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;
}