【问题标题】:Promise.all bringing up "TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))"Promise.all 提出“TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))”
【发布时间】:2021-01-10 02:25:29
【问题描述】:

我一直在开发一个 React webapp 来发送批量 SMS 消息。基本摘要:您上传一个 CSV 文件,它从中提取电话号码并映射它们,然后您可以使用 Twilio 向电话号码发送文本。上次测试时,一切正常。

由于各种原因,我已经有一段时间没有接触过应用程序的那部分了。看了下手机,上一次实际测试短信功能应该是5月26日。今天测试的时候,在终端收到了这样的错误信息:

TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))

在 Function.all ()

在 /Users/[me]/furlane_tool/client/server/index.js:30:11

有问题的行是 Promise.all 行。我从六月打开了一个旧版本(我可以访问的最旧版本),我必须对节点进行一些更新才能让一些东西正常工作(即 eslint)。它仍然提出了错误。当我将该行更改为小写的“promise”作为测试时,我得到“ReferenceError: promise is not defined”。

我想知道 Node 或 React 是否有一些变化,以及从那时起它们如何处理 Promise,或者我是否在试图让其他一些不相关的功能正常工作时以某种方式搞砸了代码。它确实正确映射了终端中的数字。

相关代码:

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

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

【问题讨论】:

  • Promise.all 采用单个参数,该参数必须是对象数组。这里给了两个参数,第一个是console.log(...),它返回undefined

标签: node.js reactjs promise typeerror


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 2020-11-06
    • 2020-12-14
    • 2021-05-21
    • 1970-01-01
    • 2021-10-22
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多