Node.js
Express

Node.jsの開発で `warn - error raised: Error: listen EADDRINUSE` って怒られるときの対応

More than 1 year has passed since last update.

最近PCの調子が悪くて突如落ちる時があります。

Node.jsで開発をしているときにこんな感じで予期せぬ終了があると、Node.jsを次に起動するときにwarn - error raised: Error: listen EADDRINUSEって怒られるときがあります。

$ node app.js

 info - socket.io started
 Express server listening on port 3002



(←プロセスの途中でPCが落ちる等で異常終了)

$ node app.js
info - socket.io started
warn - error raised: Error: listen EADDRINUSE

(←次に実行するとerrorに)

warn - error raised: Error: listen EADDRINUSEはそのポートが既に使われてる場合に発生するみたいです。つまり異常終了時のNode.jsプロセスが生きてるんですね。


解決策1 しばらく待ってから実行

そのうちNode.jsのプロセスが切れてくれるのを待ちます。


解決策2 起動ポートを変更する

app.jsのポートを変更して再起動すれば解決します。


解決策3(本命) プロセスを切って再実行

複数人開発等でポートの変更を出来ない場合もあります。

例えば、http://localhost:3000 というアクセスの仕方をフロントエンジニアに教えておいて,そこでデバッグしてもらうときなどそういうケースは多い気がします。

そんなときは、psコマンド(とgrep)でプロセス名を調べて、killでプロセスを終わらせて、Node.jsを再実行すれば解決します。

$ ps aux | grep node

user 18200 0.4 13.2 990828 80392 pts/0 Sl+ 08:43 0:03 node app.js
user 18455 0.0 0.1 114492 892 pts/1 S+ 08:55 0:00 grep node
$ kill 18200

再び実行すれば問題無く起動します。

$ node app.js

info - socket.io started
  Express server listening on port 3002


このエラーのときも同じ対応でいけるかも

追記: 2014/6/4

events.js:72

throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE


追記: 2017/7/2

久々にこのエラー出してしまった

events.js:182

throw er; // Unhandled 'error' event
^

Error: listen EACCES 0.0.0.0:80