Error: listen EADDRINUSE: address already in use :::3000 と Vite の Port 5173 is in use の対処
Error: listen EADDRINUSE: address already in use :::3000この Node.js のエラーは、別のプロセスがすでにポート 3000 で待ち受けていることを意味します(::: は「すべてのアドレス」を表す IPv6 の書き方で、127.0.0.1:3000 と表示されることもあります)。多くの場合、以前に起動して止め忘れた、同じサーバーのコピーです。
Vite は、同じ状況を別の方法で処理します。既定では次のように出力します。
Port 5173 is in use, trying another one...そして次に空いているポートで起動するため、サーバーは立ち上がっていても、期待した場所ではありません。--strictPort(または server.strictPort: true)を指定すると、Vite は代わりに終了し、Error: Port 5173 is already in use を出力します。
自分で解決する
Section titled “自分で解決する”-
ポートを使っているプロセスを見つけて終了させます。Windows では次のようにします。
ターミナルウィンドウ netstat -ano | findstr :3000taskkill /PID 12345 /FPowerShell 版を含む詳しい手順は、ポートを使っているプロセスを見つけて終了するにあります。
-
または、サーバーを別のポートで起動します。たとえば、多くの Node サーバーでは
PORT=3001、Vite では--port 5174を使います。
Moonpool での対処
Section titled “Moonpool での対処”Moonpool 経由でサーバーを実行している場合は、そのエントリに port を設定してください。すると Moonpool は次のように動作します。
- そのポートで何かが応答している間、アプリを実行中として表示します。そのため、ポートを握ったままの古いサーバーは、実行中ではあるものの “managed by Moonpool”(Moonpool による管理下)ではないものとして表示されます。
- 停止と再起動のとき、
killModeがport(webアプリの既定値)であれば、portで待ち受けているものをすべて終了させます。そのため、次の起動ではポートが空いています。 - 同じ
portが設定されている 2 つのアプリに警告を出します。
{ "id": "api", "name": "API", "group": "Web apps", "type": "web", "cwd": "C:\\code\\api", "command": "node server.js", "port": 3000, "env": { "PORT": "3000" }, "killMode": "port"}Moonpool は、起動する前にポートを確認しません。ポートがまだ使われていると、コマンドは上のエラーをアプリのターミナルタブに出力します。停止(ポートが解放されます)を押して、もう一度起動してください。
Vite では、--strictPort を渡し、port を要求するポートと同じにしておきます。
npm run dev -- --port 5173 --strictPortこれがないと、Vite が 5174 に移ってしまう一方で、Moonpool は 5173 を監視し続けるため、状態のドットが塗りつぶされることはありません。
killMode の port は、そのポート上のあらゆるプロセスを終了させます。ほかに何も必要としていないポートにだけ使ってください。Windows の Docker アプリには、絶対に使わないでください。停止と再起動を参照してください。
- アプリのフィールド:
port、killMode。 - 停止と再起動
- トラブルシューティング
- Windows で npm の開発サーバーをバックグラウンドで実行する
Moonpool は次の会社が提供する無料ソフトウェアです: FasterDB