Без особых знаний о намерении фиксировать ошибки с помощью onPreResponse, здесь может быть несколько вещей, которые можно рассмотреть
https://hapijs.com/api#-requestresponse
Объект ответа при установке. Объект может быть изменен, но не должен
назначить другой объект. Заменить ответ другим
в пределах точки расширения верните новое значение ответа. Содержит ноль
когда ответ не был установлен (например, когда запрос заканчивается
преждевременно, когда клиент отключается).
Таким образом, нулевые данные - это ожидаемое поведение, поэтому я понимаю, что вы хотите как-то обогатить ошибки. Ошибка, выдаваемая в Hapi, автоматически преобразуется в объект Boom , теперь вы пытаетесь выбросить, и ошибка, созданная неправильно, см. Документация конструктора ошибок первый параметр - это сообщение об ошибке, а не пользовательский объект. Вместо этого вы можете использовать ошибку Boom, которую конструктор позволяет вам помещать в нее пользовательские данные, например,
throw new Boom('Book not found', { statusCode: 404, decorate: { custom: 'custom' } });
Так что если вы бросите это, вы должны увидеть следующие свойства
{
"data": null,
"isBoom": true,
"isServer": false,
"output": {
"statusCode": 404,
"payload": {
"statusCode": 404,
"error": "Not Found",
"message": "Book not found"
},
"headers": {}
},
"custom": "custom"
}
Теперь вы можете добавить запись в журнал, чтобы проверить, является ли ответ ошибкой (if (response.isBoom)), и прочитать пользовательскую информацию, переданную вашей ошибкой. В любом случае, я думаю, что лучше не использовать этот тип логики в расширении onPreResponse, я бы попытался использовать обычную ошибку обработки пузырьковых ошибок из более глубоких слоев в обработчик запросов и возвращать надлежащую ошибку Boom оттуда.