Я сделал API для обновления для своего продукта. Я установил loggly
и newrelic
для целей мониторинга.NodeJS Восстановить вложенную обещание Обработка ошибок
Недавно newrelic
уведомил меня, что произошла ошибка где-то в моем коде.
app.get('/myroute', (req, res, next) => {
let payload = { /*...*/ };
return new Promise((resolve, reject) => {
/* some code */
return resolve();
})
.then(/* some promise */)
.then(() => {
/* some code */
sendEmail({params}); // some error was thrown from one of the promise chain
// inside this function...
return something;
})
.then(/* some promise */)
.then(() => {
res.send(something);
})
.catch(next);
});
Обещания цепь решена прекрасно и пользователь получает надлежащий ответ, потому что я не возвращения функции sendEmail
. И я не хочу, потому что я не хочу, чтобы пользователь долго ждал ответа.
function sendMail(params) {
return new Promise((resolve, reject) => {
/* some code */
return resolve();
})
.then(() => {
params.abc.replace('a', 'b'); // error thrown, cannot find replace of undefined.
return something;
});
}
newrelic
поймал ошибку, но loggly
не сделал. У меня уже есть настройка formatters
restify, но этого будет недостаточно, поскольку запрос был успешно подан и не попал в .catch(next)
.
Я не хочу, чтобы исправить функцию sendMail
. Я просто хочу зарегистрировать, если есть такая ошибка.
Есть ли способ поймать и зарегистрировать этот тип ошибки, не помещая .catch()
в функцию sendMail
?