В моем экспресс-приложении есть много кода на основе ES6, основанного на обещаниях. Если есть ошибка, которая никогда не поймана, я использую следующий код, чтобы справиться с ней:
process.on('unhandledRejection', function(reason, p) {
console.log("Unhandled Rejection:", reason.stack);
process.exit(1);
});
Это отлично подходит для целей отладки.
В производстве, однако, я хотел бы вызвать обработчик ошибок 500, чтобы показать пользователю стандартную страницу "Что-то пошло не так". У меня есть этот catch all обработчик ошибок, который в настоящее время работает для других исключений:
app.use(function(error, req, res, next) {
res.status(500);
res.render('500');
});
Помещение unhandledRejection внутри промежуточного программного обеспечения не работает, так как async и offen приводят к Error: Can't render headers after they are sent to the client.
Как мне сделать рендеринг 500 страниц на unhandledRejection
?