編集
これは Node.js 15 で最終的に修正されました。5 年かかりましたが、ネイティブの promise の拒否は、キャッチされていない例外のように動作するようになりました。そのため、process.on('uncaughtException'
ハンドラーを追加するだけで問題ありません。
最新の Node.js では
io.js 1.4 および Node 4.0.0 以降では、次のprocess
"unhandledRejection"
イベントを使用できます。
process.on("unhandledRejection", function(reason, p){
console.log("Unhandled", reason, p); // log all your errors, "unsuppressing" them.
throw reason; // optional, in case you want to treat these as errors
});
これにより、未処理の拒否の問題と、コード内でそれらを追跡することの難しさに終止符が打たれます。
古いNodeJSで
これらのイベントは、古いバージョンの NodeJS にまだ移植されておらず、そうなる可能性は低いです。最新バージョンと同じイベントを発生させるbluebirdなどのネイティブ promise API を拡張する promise ライブラリを使用できます。
また、未処理の拒否検出機能を提供するいくつかのユーザーランド promise ライブラリがあることにも言及する価値があります。