使用抛出错误时,passport.authenticate()中未处理的承诺拒绝错误

时间:2020-08-01 15:12:41

标签: javascript node.js express passport.js custom-error-handling

我正在尝试将发生的身份验证错误作为Node.js / Express JSON响应API发送出去。

我的代码:

console.log("LOGIN USER...");
  try {
    let errors = validationResult(req);
    if (!errors.isEmpty()) throw { code: 400, message: errors }
    let authopt = { usernameField: 'email', passwordField: 'password' };
    passport.authenticate('local', authopt, (err, user, info) => {
      if (err || !user) {
        console.log("ERROR IS PASSING FROM HERE.");
        throw { code: 500, message: err }
      }
      else {
        const token = user.generateJWT();
        return res.status(200).json({
          "jwtToken": token,
        });
      }
    })(req, res, next)
  } catch (error) {
    return res.status(error.code || 500).send(error.message || "Unknown internal server error ! .");
  }

在端点呼叫之后,消息“错误正在从这里通过。” 出现在我的控制台中,并显示错误:

(节点:9392)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝。该错误是由抛出异步内部引起的 没有捕获块或拒绝承诺 未使用.catch()处理。 (拒绝ID:1)(节点:9392)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的Node.js进程。

我正在寻找一种保持相同代码结构的解决方案。有帮助吗?

0 个答案:

没有答案