Node.jsでの「error: listen eaddrinuse: address already in use」エラーの解決方法


  1. ポートの競合の原因を特定する:

    • 他のプロセスが同じポートを使用している可能性があるため、まずは競合しているプロセスを特定します。以下のコマンドを使用して、ポートを使用しているプロセスを確認できます。
      lsof -i :3000
    • 上記のコマンドではポート番号を3000としていますが、実際のポート番号に置き換えてください。出力結果から競合しているプロセスを特定し、必要に応じて停止させます。
  2. ポート番号を変更する:

    • もしくは、競合しているプロセスを停止することができない場合は、アプリケーションで使用するポート番号を変更する方法もあります。次のようにポート番号を変更してみてください。
      const port = 3001; // 例としてポート番号を3001に変更
      app.listen(port, () => {
      console.log(`サーバーがポート${port}で起動しました。`);
      });
  3. タイムアウトを設定する:

    • サーバーが一度終了した後、そのポートがまだタイムアウトしていない場合、再起動時にポート競合のエラーが発生することがあります。この場合、サーバーを終了する前にタイムアウトを設定する方法があります。以下の例では、サーバーを終了する前に2秒のタイムアウトを設定しています。
      const server = app.listen(port, () => {
      console.log(`サーバーがポート${port}で起動しました。`);
      });
      // サーバーの終了時にタイムアウトを設定
      server.close(() => {
      console.log(`サーバーがポート${port}で終了しました。`);
      }, 2000);
  4. プロセスの再起動を試す:

    • もしどれも効果がない場合は、コンピューター自体を再起動してみることも試してみてください。競合しているプロセスが完全に終了し、ポートが解放される可能性があります。