どこで起こったかわからない unhandledRejection のコールスタックをキャプチャする
すいませんorz...
2017年後半〜2018年前半ブチクソ忙しくて全くブログの更新ができていませんでした!!!!!!!
facebookとかではちまちま発言してるのですが、会社でのサービスづくりに熱中しておりこちら側がおろそかになっていました。
そろそろ復活させるぞ!!!!
ということで復帰記事ですが完全メモ書きです。
Node / Expressでサーバーを運用していると↓みたいな感じで try catch せずに投げ捨てた非同期処理内でエラーを起こしてしまい UnhandledPromiseRejectionWarning が出力されただけで、どこでエラーが発生したかよくわからない状態になってしまうことがあります。
(node:15344) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 10): ReferenceError: hoge is not defined
これでいうと hogeの ReferenceErrorどこでおこっとるんや!!と。
そういうときは、
process.on('unhandledRejection', (reason, p) => { console.log('Unhandled Rejection at: Promise', p, 'reason:', reason); })
上記のように、unhandledRejection のイベントをキャプチャしておけば
Unhandled Rejection at: Promise Promise { <rejected> ReferenceError: hoge is not defined at type (/home/develop/fugafuga.js:725:18) at router.post (/home/develop/routes/hogehoge.js:500:7) at <anonymous> } reason: ReferenceError: hoge is not defined at type (/home/develop/fugafuga.js:725:18)
という感じでコールスタックを取得することがでるようです。