ポート番号3000の「address already in use」エラーの解決方法


  1. ポートの解放: まず最初に、ポート3000を使用している既存のプロセスを終了することができます。これにより、ポートが解放され、新しいアプリケーションがポートを使用できるようになります。
$ lsof -i :3000

上記のコマンドを使用して、ポート3000を使用しているプロセスを特定し、そのプロセスを終了します。

  1. ポートの変更: もう一つの方法は、アプリケーションが使用するポート番号を変更することです。一般的に、ポート番号3000以外の空いているポートを指定することで、このエラーを回避することができます。
const port = 4000; // 使用する新しいポート番号
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

上記の例では、ポート番号を4000に変更しています。アプリケーションを起動する際に新しいポート番号を指定し、エラーを回避します。

  1. タイムアウトの設定: 場合によっては、前のプロセスがポートを解放するまでに時間がかかることがあります。この場合、タイムアウトを設定することで、待機時間を制御できます。
const server = app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
server.on('error', (error) => {
  if (error.code === 'EADDRINUSE') {
    setTimeout(() => {
      server.close();
      server.listen(3000);
    }, 1000); // 1秒待機してポートを再試行する
  }
});

上記の例では、ポートが既に使用されている場合に1秒待機してポートを再試行するように設定しています。