単なる備忘録です。
Node.js 環境で開発しているとき、npm run dev
とかして、ローカルの開発サーバを立ち上げようとしたら、
Error: listen EADDRINUSE: address already in use :::3000
{
code: 'EADDRINUSE',
errno: -4091,
syscall: 'listen',
address: '::',
port: 3000
}
みたいなエラーが帰ってくるやつ、複数のプロジェクトを同時に開発していたりすると、たまに遭遇するんですが、簡単にいえば、特定のポート (上のエラーの例でいえば、ポート 3000 ですね) をすでに他のプロセスが使ってるからダメですよ、というエラー。
私、メインの開発環境は Windows ですので、Windows 環境での対処方法についてメモしておきます。もしかすると同じようなことに遭遇する人もいるかもしれないので。
で、手順は簡単なんですが、ポート 3000 でエラーが出た場合であれば、まず netstat
コマンドでそのポートを使っているプロセスの ID を調べます。
netstat -aon | findstr :3000
netstat
コマンドに指定しているオプションは下記の通り。
-a
オプション: リッスンしているポートもすべて表示-n
オプション: IP アドレスやポート番号を全て数値で表示-o
オプション: プロセスの ID (PID)を表示
そうすると、下記のように結果が帰ってきますので、一番最後に表示されているプロセス ID (PID) を使用してプロセスを強制終了します。
プロトコル ローカル アドレス 外部アドレス 状態 PID
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 35024
これには、taskkill
コマンドを使用します。
taskkill /F /PID 35024
指定するオプションは下記の通り。
/F
で、強制終了するプロセスを指定/PID
を続けて、終了するプロセスのプロセス ID (PID) を指定
下記のように強制終了しましたよ、というメッセージが表示されれば完了。
成功: PID 35024 のプロセスは強制終了されました。
改めて npm run dev
して、ローカルサーバが立ち上がれば OK です。