- 別のポート番号を使用する: 最も簡単な解決策は、異なるポート番号を使用することです。例えば、ポート番号3002や4000など、他の利用可能なポート番号を試してみることができます。サーバーを起動する際にポート番号を指定する箇所を変更し、再度試してみてください。
const port = 3002; // 使用する別のポート番号
app.listen(port, () => {
console.log(`サーバーがポート${port}で起動しました。`);
});
- ポートを解放する: ポート番号が既に使用されている場合、そのポートを解放する必要があります。ターミナルやコマンドプロンプトで、次のコマンドを使用してポートを解放してみてください。
lsof -i :3001
上記のコマンドを実行すると、ポート3001を使用しているプロセスが表示されます。プロセスID(PID)を確認し、次のコマンドを使用してプロセスを終了させます。
kill -9 <PID>
- タイムアウトを設定する: もう1つの解決策は、サーバーのタイムアウトを設定することです。これにより、サーバーが一定時間応答しない場合にポートを解放することができます。
const server = app.listen(3001, () => {
console.log('サーバーがポート3001で起動しました。');
});
server.on('error', (error) => {
if (error.code === 'EADDRINUSE') {
console.log('ポートが既に使用されています。タイムアウトを待って再試行します。');
setTimeout(() => {
server.close();
server.listen(3001);
}, 1000);
}
});
上記のコードでは、サーバー起動時にポート3001を指定し、エラーが発生した場合にタイムアウトを待って再試行するように設定しています。
これらの方法を試してみて、エラーメッセージ「error: listen eaddrinuse: address already in use :::3001...」を解決してください。異なるポート番号を使用する、ポートを解放する、またはタイムアウトを設定することで、サーバーを正常に起動することができるはずです。