このエラーを解決するためには、以下の方法を試すことができます。
-
別のポート番号を使用する: エラーが発生しているポート番号(例: 3000)が既に使用されている場合、他の利用可能なポート番号を選択して試してみてください。ポート番号は、一般的に3000番以降の範囲から選ぶことが推奨されています。
-
サーバーのプロセスを終了する: エラーメッセージには「address already in use」(アドレスは既に使用中)と表示されているため、同じポート番号で既に実行中のプロセスがある可能性があります。ターミナルまたはコマンドプロンプトを開き、次のコマンドを実行して、ポートを解放してください。
lsof -i :3000
上記のコマンドは、ポート番号3000を使用しているプロセスを表示します。表示されたプロセスのPIDを確認し、次のコマンドを実行して終了させます。
kill -9 <PID>
<PID>
は、先ほど確認したプロセスのIDです。 -
タイムアウトを設定する: サーバーがポートを開放するまでのタイムアウトを設定することもできます。以下はExpressフレームワークを使用した例です。
const express = require('express'); const server = express(); server.listen(3000, () => { console.log('Server started on port 3000'); }); server.on('error', (error) => { if (error.code === 'EADDRINUSE') { console.log('Address already in use, retrying...'); setTimeout(() => { server.close(); server.listen(3000); }, 1000); } });
上記のコードでは、
server.on('error')
イベントリスナーを使用して、EADDRINUSEエラーが発生した場合にタイムアウトを設定しています。タイムアウト後にサーバーを再起動することで、ポートが解放されるまでの待機時間を作ります。
これらの方法を試してみて、EADDRINUSEエラーを解決してください。異なるポート番号の選択、プロセスの終了、タイムアウトの設定は、一般的な解決策として効果的です。