我制作了在线聊天机器人,但对诺言有一些问题

时间:2019-09-19 17:37:44

标签: node.js promise

我使用heroku和node.js制作了在线聊天机器人,然后当我验证webhook时出现错误

Here it's an error on line developer

当我运行/ webhook并在此处出错时

  

UnhandledPromiseRejectionWarning:未处理的承诺拒绝。该错误是由于在没有catch块的情况下抛出异步函数而产生的,或者是由于拒绝了未使用.catch()处理的诺言而产生的

  

DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。

这里是我的代码

    app.post('/webhook', line.middleware(config), (req, res) => {
    res.sendStatus(200)
    Promise
    .all(req.body.events.map(handleEvent))
    .then((result) => res.json(result))
    .catch();
    throw new Error('Failed');
});

我认为我做出错误的承诺需要帮助,谢谢您

1 个答案:

答案 0 :(得分:0)

假设您正在使用Express,请尝试以下操作:

app.post('/webhook', line.middleware(config), (req, res) => {
  Promise
    .all(req.body.events.map(handleEvent))
    .then(result => res.status(200).json(result))
    .catch(err => res.status(500).end('Failed'));
});

或者,您可以使用next函数将错误转发到Express错误处理程序:

app.post('/webhook', line.middleware(config), (req, res, next) => {
  Promise
    .all(req.body.events.map(handleEvent))
    .then(result => res.status(200).json(result))
    .catch(err => next(err));
});