-
ポート番号の競合: エラーメッセージの中に表示されている「127.0.0.1:8000」は、ポート番号8000が既に他のプロセスによって使用されていることを示しています。これを解決するには、使用中のポート番号を特定し、競合を回避する必要があります。
解決方法:
- 別のポート番号を指定する: サーバーを起動する際に、使用されていない別のポート番号を指定します。例えば、8000ではなく、8001や8080などを試してみてください。
- 使用中のプロセスを終了する: 使用中のポート番号を特定し、そのプロセスを終了することでポートを解放できます。Unix系のシステムでは、
lsof -i :8000
コマンドを使用してポートの使用状況を確認し、kill <プロセスID>
コマンドを使用してプロセスを終了します。
-
タイムアウトや再起動による競合: 一部の場合では、前回のサーバーの起動が正常に終了しなかったり、タイムアウトしたりした場合に、ポート番号がまだ使用中と判断されることがあります。
解決方法:
- タイムアウトを待つ: 前回のサーバーがタイムアウトするのを待つことで、ポート番号が解放されることがあります。しばらく待ってから再度サーバーを起動してみてください。
- コンピューターを再起動する: 前回のサーバーのプロセスが完全に終了しなかった場合、コンピューターを再起動することでポート番号が解放されることがあります。
-
ソケットのクローズ: サーバーコード内でソケットを適切にクローズしなかった場合にも、このエラーが発生することがあります。
解決方法:
-
ソケットを明示的にクローズする: サーバーの終了時にソケットを正しくクローズするようにします。以下はNode.jsでの例です。
const server = app.listen(8000, () => { console.log('Server started on port 8000'); }); // サーバー終了時にソケットをクローズする process.on('SIGINT', () => { server.close(); });
-