Promise.all出现“TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))”错误

3
我一直在开发一个React Web应用程序,用于发送批量短信。基本上,您需要上传CSV文件,它会从中提取电话号码并进行映射,然后您就可以使用Twilio向这些电话号码发送短信。上次测试时,一切正常。
由于各种原因,我已经有一段时间没有接触过该应用程序的这个部分了。在查看我的手机后,我最后一次测试短信功能的时间应该是5月26日。今天我测试时,在终端中收到了以下错误消息:
TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator)) at Function.all () at /Users/[me]/furlane_tool/client/server/index.js:30:11
问题出在Promise.all这一行。我打开了6月份的旧版本(我能够访问的最旧版本),并且必须更新node以使某些内容工作(即eslint)。它仍然出现了错误。当我将该行更改为小写的“promise”作为测试时,我得到了“ReferenceError:promise未定义”。
我想知道自那时以来Node或React在处理Promises方面是否有所改变,或者我在尝试获取其他不相关功能时是否弄乱了代码。但是,它确实可以正确地在终端中映射这些数字。
相关代码:
app.post('/test', (req, res) => {
  res.header('Content-Type', 'application/json');
  const numbers = req.body.to;
    console.log("This is the to numbers:" + numbers);


  Promise.all(
    console.log(numbers[0]),
    numbers[0].map(number => {
      console.log("Numbers mapped:", number);
      return client.messages.create({
        to: number,
        from: process.env.TWILIO_PHONE_NUMBER,
        body: req.body.body
      });
    })
  )
    .then(messages => {
      console.log('Messages sent!');
    })
    .catch(err => console.error(err));
});

如果您需要代码的其他部分,请告诉我!


2
Promise.all 接受一个参数,该参数必须是一个对象数组。这里给出了两个参数,第一个参数是 console.log(...),它返回 undefined - undefined
2个回答

10

Promise.all() 应该接收一个数组参数


2
 Promise.all() 
 Takes in an array of argument.
 Dont use forEach() it returns undefined.
 Map returns an array.

    const test=()=>{
           Promise.all(
               testArray.forEach(async()=>{
                   await ....
    })
    );
    };   // Throws Error
    
    const test=()=>{
           Promise.all(
               testArray.map(async()=>{
                   await ....
    })
    );
    };  // Works well

您的回答目前不太清楚。请[编辑]以添加更多详细信息,以帮助其他人理解它是如何回答所提出的问题的。您可以在帮助中心找到有关撰写良好答案的更多信息。 - undefined
请添加更多细节,不要只发布代码答案。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接