npmの http-server
を実行すると次のようなエラーになることがあり、これは http-server が使用するポート8080番が他のプロセスによって既に使用されていることが原因として考えられる。これの対処として、ポート8080番を使用しているプロセスを特定して強制終了させる方法を本記事で紹介する。
C:\Users\anonymous\dev>http-server
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE 0.0.0.0:8080
at Object.exports._errnoException (util.js:837:11)
(省略)
at node.js:951:3
筆者はWin環境を使用しているため、ここではWin環境での対処を記す。
netstat -aon | find "8080"
このコマンドでは、ポート8080番を使用しているプロセスを調べる。
TCP ***.***.***.***:* 0.0.0.0:8080 LISTENING (数字)
この一番右の(数字)は、ポート8080番を使用しているプロセスのIDである。
次のコマンドでは、このIDを指定してそのプロセスを強制終了する。
taskkill /PID /F (数字)
もう一度 netstat -aon | find "8080"
を実行すると空の行が出力される(=ポート8080番を使用しているプロセスが存在しない)ので、再度 http-server
を実行すると今度はうまく立ち上がるはずである。
http-server
の起動成功時には次のように出力される。
※ルートディレクトリを示す引数に ./static/pages
を指定している。
Starting up http-server, serving ./static/pages
Available on:
http://192.168.24.52:8080
http://192.168.56.1:8080
http://127.0.0.1:8080
Hit CTRL-C to stop the server
[Fri Dec 02 2016 15:11:10 GMT+0900 (東京 (標準時))] "GET /" "Mozilla/5
.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chro
me/54.0.2840.99 Safari/537.36"
他環境での対処を知りたい読者は、以下を調べることで代替可能と思われる。
- 「指定のポート番号を使用しているプロセスを調べるコマンド」
- 「特定のプロセスを強制終了するコマンド」
以上。