detecting-port-conflicts について
ポート使用中のエラーを診断し、開発サーバーを再開する方法を示すスキルです。プロセスの確認や終了、別ポートの利用を案内します。
主な機能
- 01よくあるポート競合エラーの検出
- 02lsof による使用プロセスの特定
- 03プロセス終了またはポート変更の案内
- 04全 Node プロセス終了時の注意喚起
活用シーン
- 01開発サーバーが起動しない原因の調査
- 02ポートを使用するプロセスの特定
- 03空いているポートでのサーバー再起動
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spencerpauly/ awesome-cursor-skills --skill detecting-port-conflictsインストール後、Claude Code で/detecting-port-conflictsを入力して読み込まれたか確認します。
詳細
ポートの競合を検出する
ポートがすでに使用中で開発サーバーを起動できない場合に、原因を特定して解決します。
検出
ターミナルの出力から、次のパターンを探します。
EADDRINUSEaddress already in usePort XXXX is already in usebind: address already in useOSError: [Errno 98] Address already in use
エラーメッセージからポート番号を抽出します。
原因の特定
ポートを使用しているものを探します。
lsof -i :<PORT> -P -n
これにより、PID、プロセス名、ユーザーが表示されます。よくある原因は次のとおりです。
- 正常に終了しなかった以前の開発サーバー
- 別のプロジェクトの開発サーバー
- Docker コンテナ
- システムサービス
解決方法
方法 1:ポートを塞いでいるプロセスを終了する
kill <PID>
# If it doesn't stop:
kill -9 <PID>
その後、元のサーバーを再起動します。
方法 2:別のポートを使用する
次に利用可能なポートを提案します。
# Check if port+1 is free
lsof -i :<PORT+1> -P -n
開発サーバーの設定または起動コマンドを更新します。
- Next.js:
next dev -p <PORT> - Vite:
vite --port <PORT> - Express:
PORT環境変数を設定 - Django:
python manage.py runserver <PORT>
方法 3:すべての node プロセスを終了する(最終手段)
killall node
すべてのプロセスを終了するため、ユーザーが確認した場合にのみ提案してください。
ヒント
- macOS では、1024 未満のポートを使用するには root 権限が必要です。
- Docker コンテナは、停止後もポートのバインドが残ることがあります。
docker psで確認してください。 lsofに何も表示されない場合、ポートが TIME_WAIT 状態の可能性があります。30 秒待つか、別のポートを使用してください。
コメント
Markdown 対応