最近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