Node.jsで「listen EADDRINUSE: アドレスは既に使用中です」エラーの解決方法


lsof -i :3000

上記のコマンドを実行すると、ポート番号3000を使用しているプロセスが表示されます。プロセスID(PID)を特定し、次にそのプロセスを終了させるか、別のポート番号を使用するように設定を変更します。

  • タイムアウトやリトライを実装する: サーバーを起動する際に、ポートが使用中の場合にタイムアウトやリトライを実装することもできます。以下は、Node.jsのコード例です。

    const http = require('http');
    const PORT = 3000;
    const server = http.createServer((req, res) => {
     res.statusCode = 200;
     res.setHeader('Content-Type', 'text/plain');
     res.end('Hello, World!');
    });
    server.on('error', (error) => {
     if (error.code === 'EADDRINUSE') {
       console.log(`Port ${PORT} is already in use.`);
       // ここでタイムアウトやリトライの処理を実装する
     } else {
       console.error(error);
     }
    });
    server.listen(PORT, () => {
     console.log(`Server listening on port ${PORT}`);
    });

    上記の例では、サーバー起動時にポートが既に使用中の場合、EADDRINUSEエラーが発生します。このエラーをキャッチして、タイムアウトやリトライの処理を実装することができます。

  • プロセスの再起動を試す: ターミナルやコマンドプロンプトでサーバープロセスが実行されている場合、一時的な問題が原因でエラーが発生している可能性があります。プロセスを再起動してみてください。