Node.jsプログラムを終了する方法

Node.jsアプリを可能な限り最良の方法で終了する方法を学ぶ

Node.jsアプリケーションを終了するにはさまざまな方法があります。

コンソールでプログラムを実行すると、次のコマンドでプログラムを閉じることができます。ctrl-C、しかしここで議論したいのはプログラム的に終了することです。

最も抜本的なものから始めて、なぜあなたがより良いのかを見てみましょうないそれを使用します。

ザ・processコアモジュールは、Node.jsプログラムをプログラムで終了できる便利なメソッドを提供します。process.exit()

Node.jsがこの行を実行すると、プロセスはただちに強制終了されます。

これは、保留中のコールバック、まだ送信されているネットワークリクエスト、ファイルシステムアクセス、または書き込みプロセスを意味します。stdoutまたはstderr-すべてがすぐに不当に終了します。

これで問題がない場合は、オペレーティングシステムに終了コードを通知する整数を渡すことができます。

process.exit(1)

デフォルトでは、終了コードは0、これは成功を意味します。終了コードが異なれば意味も異なります。これを独自のシステムで使用して、プログラムを他のプログラムと通信させることができます。

終了コードの詳細については、次のURLを参照してください。https://nodejs.org/api/process.html#process_exit_codes

を設定することもできますprocess.exitCodeプロパティ:

process.exitCode = 1

プログラムが後で終了すると、Nodeはその終了コードを返します。

すべての処理が完了すると、プログラムは正常に終了します。

Nodeを使用して、次のHTTPサーバーのようなサーバーを何度も起動します。

const express = require('express')
const app = express()

app.get(’/’, (req, res) => { res.send(‘Hi!’) })

app.listen(3000, () => console.log(‘Server ready’))

このプログラムは決して終わりません。あなたが電話する場合process.exit()、現在保留中または実行中のリクエストはすべて中止されます。これはよくない

この場合、コマンドにSIGTERMシグナルを送信し、それをプロセスシグナルハンドラーで処理する必要があります。

注意:process「必須」は必要ありません。自動的に利用可能になります。

const express = require('express')

const app = express()

app.get(’/’, (req, res) => { res.send(‘Hi!’) })

const server = app.listen(3000, () => console.log(‘Server ready’))

process.on(‘SIGTERM’, () => { server.close(() => { console.log(‘Process terminated’) }) })

信号とは何ですか?シグナルはPOSIX相互通信システムです。発生したイベントをプロセスに通知するためにプロセスに送信される通知です。

SIGKILLプロセスにすぐに終了するように指示するシグナルであり、理想的には次のように動作します。process.exit()

SIGTERMプロセスに正常に終了するように指示するシグナルです。これは、次のようなプロセスマネージャーから送信されるシグナルです。upstartまたはsupervisordと他の多く。

この信号は、プログラム内から別の関数で送信できます。

process.kill(process.pid, 'SIGTERM')

または、プログラムを実行している別のNode.js、または終了するプロセスのPIDを知っているシステムで実行されている他のアプリから。

私の無料ダウンロードNode.jsハンドブック


その他のノードチュートリアル: