ポートが使用中で起動できない時の対処法|原因とプロセスの止め方をやさしく解説

開発サーバーを起動しようとしたら、いきなりこんなエラーが出て止まった——。

「address already in use」「EADDRINUSE」。

これは、使おうとしたポートが、すでに別のプロセスに使われているときに起きるエラーです。

この記事では、その原因と、プロセスの止め方までの対処法を、初心者にもわかりやすく解説します。

さっきまで動いてたのに、急に起動でけへんくなったわ…なんでやろ?

わかりやすく解説しますね。

目次

この記事の対象読者

  • 開発サーバーが起動できず困っている
  • 「address already in use」の意味を知りたい方
  • 使用中のプロセスの止め方を知りたい方
  • ローカル開発を始めたばかりの方

「ポートが使用中」エラーとは?

ポートは、通信の“出入り口”につけられた番号です。

そして、1つのポートは、同時に1つのプロセスしか使えません

すでに何かがそのポートを使っている状態で、別のアプリが同じポートを使おうとすると、「もう使われています」とエラーになるわけです。

ポートそのものの仕組みは、こちらの記事で詳しく解説しています。

よくあるエラーメッセージ

環境によって表示は少し違いますが、たとえば次のようなメッセージです。

Bash
Error: listen EADDRINUSE: address already in use :::3000
Bash

「:::3000」の部分が、いま奪い合いになっているポート番号(この例では3000番)です。

なぜ起きる?主な原因

  • 前回のプロセスが残っている:正しく終了できておらず、まだポートを掴んでいる
  • 別のアプリが同じポートを使っている:他のツールがすでに使用中
  • 二重に起動してしまった:同じサーバーをうっかり2回立ち上げた

いちばん多いのは、前回のプロセスが終了しきれずに残っているパターンです。

ああ、さっき止めたつもりが残ってたんかもしれへんな…。

ポート使用中エラーの対処法

①いちばん簡単:別のポートで起動する

急いでいるなら、空いている別のポートで起動するのが手っ取り早い方法です。

Bash
# 環境変数でポート番号を変える(例:3001番)
PORT=3001 npm run dev

# Vite ならオプションでも指定できる
npm run dev -- --port 3001
Bash

②使用中のプロセスを見つけて止める

根本的に解決するなら、ポートを掴んでいるプロセスを特定して止めます

Mac・Linuxの場合は、次のコマンドです。

Bash
# 3000番ポートを使っているプロセスを調べる
lsof -i :3000

# 表示された PID(プロセス番号)を指定して停止する
kill -9 PID
Bash

Windowsの場合は、次のコマンドで確認・停止できます。

Bash
# 3000番ポートを使っているプロセスを調べる
netstat -ano | findstr :3000

# 表示された PID を指定して停止する
taskkill /PID PID /F
Bash

コマンドに不慣れな方は、こちらの基本コマンドの記事もあわせてどうぞ。

③最終手段:パソコンを再起動する

どうしても分からないときは、パソコンを再起動すれば、たいていのプロセスはリセットされます。

ただし毎回これに頼るのは非効率なので、できれば②の止め方に慣れておくのがおすすめです。

まとめ

「ポートが使用中」エラーは、同じポートを2つのプロセスが取り合っている状態です。

急ぐなら別ポートで起動、根本解決するなら使用中のプロセスを止める、が基本の流れです。

作業を終えるときはCtrl+Cなどできちんとプロセスを停止するようにすると、そもそも起きにくくなります。

ローカル開発で困ったときは、あわせてこちらの記事も参考にしてみてください。

プロセスの止め方さえ覚えたらこわないな。次から自分で直せそうや、ありがとう!

よくある質問

再起動したら直りますか?

直ることが多いです。ただし原因のプロセスを止めるほうがスマートで早い場合もあります。まずは別ポート起動やプロセス停止を試し、それでも分からないときの最終手段にしましょう。

どのポート番号を使えばいいですか?

使われていない番号(3001や5173など)を選べば大丈夫です。ただし0〜1023番は特別な用途に使われるため、避けるのが無難です。

killしても大丈夫ですか?

止める前に、それが本当に対象のプロセスか確認しましょう。関係のないプロセスを止めてしまわないよう、lsofやnetstatで表示されたPIDをよく見てから実行するのが安全です。

毎回このエラーが出るのはなぜですか?

前回のプロセスがきちんと終了できていない可能性が高いです。ターミナルでCtrl+Cを使うなど、作業終了時に正しく停止する習慣をつけると起きにくくなります。

そもそもポートって何ですか?

通信の出入り口につけられた番号のことです。詳しくは「ポート番号とは?」の記事で図解を交えて解説しているので、あわせて読むと理解が深まります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次