私は自分の製品のためにAPIを作成しました。モニタリング目的でloggly
とnewrelic
をインストールしました。NodeJSネストされた約束エラー処理を復元する
最近、newrelic
は私のコードのどこかにエラーがあることを通知しました。私はリターンsendEmail
機能しませんでしたので、完全に罰金およびユーザー解決
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);
});
約束チェーンは、適切な応答を取得します。私はユーザーが長い間応答を待つことを望まないので、私は望んでいません。
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
セットアップを行っていますが、リクエストが正常に処理され、.catch(next)
に収まらないため、十分ではありません。
sendMail
機能を解決するソリューションは欲しくないです。このようなバグがあればログに記録したいだけです。
.catch()
をsendMail
にすることなく、このタイプのエラーをキャッチしてログに記録することはできますか?