Ошибка отказа необработанного обещания в паспорте .authenticate () при использовании ошибки throw - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь отправить произошедшую ошибку аутентификации как 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, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отказа: 1) (узел: 9392) [DEP0018] DeprecationWarning: необработанные отклонения обещаний устарели. В будущем невыполненные отклонения обещаний завершат процесс Node.js с ненулевым кодом выхода.

Я ищу решение, сохраняя ту же структуру кода. Любая помощь?

...