NodeJS 承诺,所有显示“类型错误:undefined不可迭代(无法读取属性Symbol(Symbol.iterator))”

raogr8fs  于 2023-02-03  发布在  Node.js
关注(0)|答案(2)|浏览(167)

我一直在开发一个React网络应用程序来发送大量短信。你上传一个CSV文件,它会从中提取电话号码并Map它们,然后你可以使用Twilio向这些电话号码发送文本。上次我测试它时,一切正常。
由于种种原因,我已经有一段时间没有碰过这部分应用了,翻遍手机后,我上一次真正测试短信功能应该是5月26日,今天测试的时候,终端里出现了这样的错误信息:
TypeError:undefined不可迭代(无法读取属性Symbol(Symbol. iterator))
在函数. all()中
地址:/用户/[我的]/furlane_tool/客户端/服务器/index. js:30:11
有问题的行是Promise. all行。我打开了一个6月份的旧版本(我可以访问的最旧版本),我必须对node做一些更新以使一些东西(即eslint)工作。它仍然带来了错误。当我将该行更改为小写"promise"作为测试时,我得到了"ReferenceError:未定义承诺"。
我想知道Node或React是否有一些变化,以及它们是如何处理承诺的,或者是我在尝试让其他一些不相关的功能工作时不知何故搞砸了代码。
相关代码:

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));
});

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

xggvc2p6

xggvc2p61#

Promise.all()应带有数组参数

dgtucam1

dgtucam12#

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

相关问题