【node.js】Windows環境でサーバーを強制停止…再起動できない時の対処法

Windows環境にnode.jsサーバーを立てたとき、

  • 適当なサーバーを動かす
  • Ctrl+Cで強制停止させる
  • なのにプロセスが動き続ける
  • 新規にサーバー起動ができない

こういう困った事態に遭遇しました。

ようやく正しいプロセスの止め方が分かったので、
node.jsサーバーを適切に停止させる方法を紹介

Windows環境ならこの方法を使えば間違いないです。

EADDRINUSE: address already in useというエラー発生

とあるnode.jsライブラリを使ってました。

githubからダウンロードしてビルドして

コマンドラインからサーバーを起動しました。

▼ このような一連のコマンド

このようにCtrl+Cでサーバーを終了していました。それで上手くプロセスが終了してくれることが大抵だけど、プロセスだけが残ってしまう場合もあるようです。

例えば一度サーバーを起動させてからCtrl+Cで強制終了、そのあともう一度 npm run-script dev でサーバー起動してみるとこんなエラーが表示されました。

▼ こんなエラーが発生!

address already in use 127.0.0.1:4000

つまり4000番ポートを使って127.0.0.1 = localhostからサーバー起動したけど、既に使われてるから起動できないません、というエラーメッセージです。

実はサーバープロセスが生きてたという話

この解決方法は簡単でした。

Windowsでサーバープロセス停止させる正しい手順

その手順はざっと説明すると次の通り

1.特定のポート番号を使用しているPIDを調べる

このケースでは4000のポート番号です。

そのポート番号を持つPIDを調べます。

▼ netstatコマンドで一覧表示

▼ 一覧から4000番ポートを探す

ローカルアドレスが 127.0.0.1 であり、なおかつ状態が ESTABLISHED になっているのが起動中サーバーのプロセスです。そのPIDをメモしておいてください。

※ この場合のPIDは 5008 だった

2.taskkillコマンドでPIDをキルする

あとはサーバーのPIDをキルするだけです。

▼ taskkillコマンドを実行

この例では 5008 となっていますが、そこは各自で調べたPIDに置き換えてください。これでnode.jsで立てたサーバーをプロセスごと終了できます。

あるいはタスクマネージャーから【詳細】を開き、目的のPIDを探し出して【右クリック】=>【タスクの終了】でキルしても同じことができます。

node.jsサーバーのPIDを調べてtaskkillコマンドまたは画像のように直接node.exeを終了すればOK

どちらを使ってもOKです。

node.jsサーバーが再起動できない対処法まとめ

簡単に箇条書きでまとめます。

  • node.jsサーバーをCtrl+Cなどで強制終了
  • なぜかプロセスが生きていて再起動できない
  • その場合はプロセスのPIDを調べる
  • 対象のPIDをkilltaskなどで終了すればOK

node.jsサーバーが再起動できない時は役立つ方法かも

以上、node.jsサーバーが再起動できない対処法でした。

何かあればコメント欄から。ではまた(@^^)/~~~

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください