ここでのサイレント エラーとは、いかなる問題も目に見える兆候を示さないことを意味します。
最も一般的な例:
それぞれを詳しく理解して、デバッグする方法を説明します:
これらのエラーは、.catch() ハンドラーを Promise にアタッチしなかった場合に発生します。その結果、Promise が拒否された場合でも、エラーは表面化されません。
このエラーは、unhandled-rejections 引数を指定してコードを実行することでデバッグできます。未処理の Promise 拒否時にノードにプロセスを強制終了させ、エラーを明示します。
node --unhandled-rejections=strict script.js
次のような Node.js コードを見つけましたか?
「はい」の場合、未解決の Promise またはどこかの無限ループが原因である可能性が高くなります。
以下のようにスクリプトの実行時間を制限することで問題を検証できます:
timeout 10s node script.js || echo "Warning: Unresolved promise or infinite loop detected"
共有状態の競合状態は、複数のコールバックが同時に共有状態にアクセスすると発生します。
競合状態により、プログラムは予測不可能な結果をもたらし、テスト中に目に見える症状がなくデータの不整合を引き起こします。
しかし幸いなことに、node は実際にそのような実行パターンを識別するための trace-async-hooks オプションを提供します。
node --trace-async-hooks script.js 2>&1 | grep "asyncId"
最後に、イベント リスナー内のエラーについて話しましょう。
これらは、イベント リスナー コールバック内の未処理の Promise 拒否によって発生します。これにより、エラーがメインの実行コンテキストに伝播されなくなります。
すべてのノード イベント ログを grep フィルターにリダイレクトして、イベント処理中に発生したエラーをキャプチャすることで、これらのエラーを特定できます
node -r events script.js 2>&1 | grep "Error"
以上です。
JavaScript コードのサイレント エラーをデバッグする際に、これらのコマンドが役立つことを願っています。
また、どのサイレント エラーが最も気になるのか、以下にコメントしてください。
以上がJavaScript の「サイレント エラー」をデバッグするよう命令の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。