Стрела - несоответствие в выданной ошибке и ошибка в ответе

Речь идет о бум, который является плагином для Hapijs.

Эта функция предназначена для выдачи ошибки

const errorThrower = (msg = 'Internal Server Error', errorCode = 500) => {
  const error = new Error(msg);
  error.httpStatusCode = errorCode;
  throw error;
};

И вот как я использую его в другом файле

try {
      ...
      errorThrower('Invalid client id for partner', 404);
      ...
  } catch (error) {
    return boom.boomify(error,
      {
        statusCode: error.statusCode,
      });
  }

Теперь это приводит к 500 Internal Server Error, тогда как я ожидал бы 404 Invalid client id for partner от Boom. Журнал указывает на ошибку на консоли, что явно означает, что она не была обнаружена.

Где я ошибаюсь?

Что стоит за ...? Некоторые обратные вызовы? Асинхронный код?

Jonas Wilms 10.08.2018 15:10

Просто какой-то код, который не имеет значения

Aakash Verma 10.08.2018 15:10
1
2
848
1

Ответы 1

О, это было быстро.

Итак, нет встроенного свойства, такого как error.statusCode, а скорее error.httpStatusCode, который я устанавливаю внутри своей функции errorThrower.

Вот почему, возможно, boom предполагает 500, поскольку я не предоставляю действительный statusCode (error.statusCode не определен).

Цитируя бум,

statusCode - the HTTP status code. Defaults to 500 if no status code is already set and err is not a Boom object.

Это было единственное изменение, необходимое для правильной реакции на ошибку:

return boom.boomify(error,
  {
    statusCode: error.statusCode,
  });

Мог также создать объект Boom ...

Другие вопросы по теме