2017-11-09 3 views
1

未処理の約束拒絶の行を見つけ、SOのが見つかりました:NodeJS - 私は約束拒否を未処理キャッチするイベントハンドラを使用してい

process.on('unhandledRejection', function(error, promise) { 
    console.error('UNHANDLED REJECTION - Promise: ', promise, ', Error: ', error, ').'); 
}); 

私は+を表現nodejsを使用していますので、プリントアウトすることが難しいのですコードステートメントの行番号。私はそうするためのカスタマイズされたconsole.log2メソッドを持っていますが、私は拒否ハンドラと同じことを達成しようとしています。

私はエラースタックなどのさまざまな呼び出し元/スタックトレーストリックを試みましたが、それらのメソッドのどれもreject()ステートメントがどの行にあるかを正しく示していません。明確にするために

EDIT

、私が手にプリントアウトは、上記console.error文が(したがって、同じライン毎回)であることを行番号を示し続け、その後、/様々な約束ライブラリファイルを逆方向​​に動作しますライン。それは、reject()ステートメント自体がある行を完全にスキップ/ミスします。

+0

@ジャロマンダX - はい、トレースもうまくいきませんでした。問題が明確になるだろう。 – Karric

+0

'.catch()'なしで '.then()'を使っている場所を見つけるためにコード検査を試しましたか?このイベントの原因となるものだけではありません。 – jfriend00

+0

@ jfriend00 - 特定の拒否インスタンスではなく、一般化されたハンドラが必要なだけで、呼び出し元の行番号を表示することができます。 – Karric

答えて

1

は図書館に非常に多くを依存し、私はそれを再現することができませんでしたが、私はあなたがこの選択肢を試すことをお勧め:

process.on('unhandledRejection', up => { throw up }); 

だけ約束してエラーを報告するよりも効果的であるが、多分あなたにすべきそれが適切に機能しない可能性があります。ちょっと試してみてください...

関連する問題