UnhandledPromiseRejectionWarning в неасинхронной функции в Node / Express - PullRequest
0 голосов
/ 29 апреля 2019

У меня возникли проблемы с пониманием этой ошибки. У меня есть функция с именем getDeliveryDate (), которая вызывается из конечной точки. Эта функция кажется не асинхронной, но я получаю необработанное обещание:

// Deadlines increments are in minutes
function getDeliveryDate(
  inputDate,
  normalDeadline,
  fastDeadline,
  fastDelivery
) {
  var deliveryDate = new Date();

  try {
    !fastDelivery
      ? deliveryDate.setTime(inputDate + normalDeadline * 60 * 1000)
      : deliveryDate.setTime(inputDate + fastDeadline * 60 * 1000);

    return deliveryDate;
  } catch (error) {
    console.log("getDeliveryDate error:".error, error);//  <-- this line is okey, I am using colors library
  }

И это где вызов getDeliveryDate

...
     try {
              blockFields.finishDate = getDeliveryDate( // <-- the call
                Date.now(),
                req.body.blockOptions.deadline,
                req.body.blockOptions.fastDeadline,
                req.body.blockOptions.fastDelivery
              );
            } catch (error) {
              console.log("getDeliveryDate error".error, error); // <-- this line is okey, I am using colors library
            }
...

Чего мне не хватает? Является ли getDeliveryDate асинхронной функцией? Как я могу правильно обработать его ошибки?

UPDATE

Я использовал переменную, которую позже изменил, поэтому больше не существовал. После исправления ошибки я все еще не уверен, как отловить ошибку для этой функции.

Теперь все работает, но если я ввожу неправильную переменную, я все равно не улавливаю ошибку и не получаю эту ошибку (то есть, если я ввожу неправильное значение finishDate):

(узел: 50620) UnhandledPromiseRejectionWarning: ValidationError: сбой проверки блоков: finishDate: сбой приведения к дате для значения «Неверная дата» в пути «finishDate»

Почему мой улов (ошибка) не работает?

1 Ответ

1 голос
/ 29 апреля 2019

Добавьте --trace-warnings к своим аргументам для запуска Node. Он должен показать вам трассировку стека необработанных ошибок.

Тем не менее, похоже, что эта строка console.log("getDeliveryDate error".error, error); может быть виновником. У вас есть ошибка в блоке catch, но нет ничего, что бы поймало эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...