1. ホーム
  2. node.js

[解決済み】Node.jsが終了する直前にクリーンアップアクションを実行する

2022-03-24 15:17:38

質問

Node.jsが何らかの理由で終了する直前に、常に何かをするように指示したいのです - 。 Ctrl + C が発生した、例外が発生した、などの理由が考えられます。

こんなことをやってみました。

process.on('exit', function (){
    console.log('Goodbye!');
});

プロセスを起動し、終了させましたが、何も起こりませんでした。もう一度起動し Ctrl + C それでも何も起こりませんでしたが...。

どうすればいいですか?

アップデートを行う。

のハンドラを登録することができます。 process.on('exit') で、それ以外の場合( SIGINT または処理されない例外)を呼び出すことです。 process.exit()

process.stdin.resume();//so the program will not close instantly

function exitHandler(options, exitCode) {
    if (options.cleanup) console.log('clean');
    if (exitCode || exitCode === 0) console.log(exitCode);
    if (options.exit) process.exit();
}

//do something when app is closing
process.on('exit', exitHandler.bind(null,{cleanup:true}));

//catches ctrl+c event
process.on('SIGINT', exitHandler.bind(null, {exit:true}));

// catches "kill pid" (for example: nodemon restart)
process.on('SIGUSR1', exitHandler.bind(null, {exit:true}));
process.on('SIGUSR2', exitHandler.bind(null, {exit:true}));

//catches uncaught exceptions
process.on('uncaughtException', exitHandler.bind(null, {exit:true}));