0
0

More than 1 year has passed since last update.

nodeでhttpサーバーが立ち上がらなくて四苦八苦した話

Last updated at Posted at 2021-12-09

概要

同僚とWebアプリを開発しているときに、環境差分でトラブルに見舞われることはよくあると思うのですが、自分の場合なかなか原因が掴みづらかったので、解決に至った手順を書こうと思います。

エラー内容

Error: listen EADDRINUSE: address already in use 0.0.0.0:8081

8081ポートがすでに使われているから、nodeでサーバー立ち上げられないよ。というエラー。
ですが、ここの問題に取り組む前にnodeの環境揃えとかんと話にならないということで、nodenvを使ってバージョンを揃えます。

nodenv導入

MacOSを利用しているので、zshで実行しています。

brew install nodenv

nodenvをインストールしてから以下のコマンドを実行します。

eval "$(nodenv init -)"

次に、カールでこちらを実行します。

$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash

これでOKがコンソールに表示されていれば、nodenvの設置完了です。

指定バージョンのNodeをインストール

今回は、Node.jsの14.17.3をインストールしたいと思います。

nodenv install 14.17.3

nodenvに認識させます。

nodenv rehash

ディレクトリ配下でバージョンを適用させる場合

nodenv local 14.17.3

システム全体でバージョンを適用させる場合

nodenv global 14.17.3

nodeのバージョンを確認してみましょう。

node --version
# v14.17.3

プロセスを消しにいく

指定されたポートがすでに利用されているならば、ポートを塞いでいるプロセスを落として仕舞えばいいじゃない。ということでkill processします。

ps aux | grep node

これで表示されるプロセスを全消しして、再度nodeコマンドを実行するも、ポート8081がすでに利用されているというエラーは変わらない。

そんな時はこちらを試してみてください。

ポートを指定してPIDを消す

下記コマンドを実行します。

lsof -i :8081

これは、LiSt Open Fileの頭文字をとったコマンドで、プロセスが開いているファイルを列挙するコマンドになっています。先ほどはnodeを文字列に含むプロセスを探したのですが、今回はportを指定してプロセスを探しにいきます。

これで表示されたPIDをkillしてあげたら、僕の場合は無事実行することができるようになりました。

最後に

nodenvにもっと早く出会ってればよかったです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0