1. ホーム
  2. node.js

[解決済み] node.jsを優雅に終了させる

2023-08-15 14:46:48

質問

優れたオンライン・ブックを読んでいるのですが http://nodebeginner.org/ を読み、簡単なコードを試しています。

var http = require("http");

function onRequest(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}

http.createServer(onRequest).listen(8888); 

さて、私はnode.jsを優雅にシャットダウンする方法を知らなかったので(今も知らない!)、ただ単に ctrl+z . 今、私が実行しようとするたびに node server.js を実行しようとすると、次のようなエラーメッセージが表示されます。

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: EADDRINUSE, Address already in use
    at Server._doListen (net.js:1100:5)
    at net.js:1071:14
    at Object.lookup (dns.js:153:45)
    at Server.listen (net.js:1065:20)
    at Object.<anonymous> (/Users/Bob/server.js:7:4)
    at Module._compile (module.js:402:26)
    at Object..js (module.js:408:10)
    at Module.load (module.js:334:31)
    at Function._load (module.js:293:12)
    at Array.<anonymous> (module.js:421:10)

では、質問を2つ。

1) どうすればnode.jsを優雅にシャットダウンできますか?

2) 私が作成した混乱をどのように修復しますか?

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

  1. 使用方法 Ctrl + C でノードプロセスを優雅に終了させます。

  2. 混乱を一掃するためには、プラットフォームにもよりますが、基本的にはnodeが動作していたプロセスの残骸を見つけ、それをkillする必要があります。

    例えば、Unixでは ps -ax | grep node のようなエントリが得られます。

    1039 ttys000    0:00.11 node index.js
    
    

    ここで index.js はノードファイルの名前です。

    この例では、1039がプロセスIDです(あなたのは違うでしょう)ので kill -9 1039 で終了させ、再びポートにバインドできるようにします。