1. ホーム
  2. node.js

Node.js:スクリプトの自然終了を妨げているイベントループに何が残っているか検査する

2023-10-03 16:10:01

質問

Node.jsのスクリプトは、メインイベントループにコールバックが残っている場合、終了することができません。を呼び出すことでスクリプトを強制的に終了させることができますが、そのようなことはありません。 process.exit() を呼び出したり例外を投げたりして強制的に終了させることもできますが、常に適切なクリーンアップを行うことで、スクリプトを "自然に終了させることが推奨されます。しかし、コードにバグがあると適切なクリーンアップができないことがあります。たとえば、不要になった IntervalObject を削除し忘れるなどして、最終的にプログラムが終了しないことがあります。

したがって、終了しないスクリプトをデバッグして、イベント ループに登録されたままのものを見つける方法はあるでしょうか。言い換えれば、プログラムの終了を妨げているものをデバッグする方法はNode.jsにあるのでしょうか?

どのように解決するのですか?

以下のように process._getActiveRequests() でアクティブな I/O リクエストのリストを取得し process._getActiveHandles() でオープンハンドル/ファイルディスクリプタのリストを取得します。