Node.js で非同期処理を待って正常終了させる

$ node hoge.js のような形で Node.js に JavaScript コードを実行させるときに、process.exit(1) のように書くと、引数に指定した終了コードで処理を終了できる (0 なら正常終了、1 なら異常終了)。コレでシェルスクリプトのような操作ができるのだ。

しかし、この process.exit() は非同期処理を待ってくれないので、以下のように exit イベントに追加する形で呼んであげると良い。

process.on('exit', () => {
  process.exit(1);
});

少なくとも正常終了時は process.exit(0) を明記せず、非同期処理が絡む異常終了時のみ、このように exit イベントに追加して呼ぶようにすると良いだろう。