問題の概要:
ポートでサーバーを実行しようとしたとき80 XMLHttpRequest を使用してリクエストを実行すると、Node.JS でエラー「エラー: listen EADDRINUSE」が発生する場合があります。このエラーは、別のプロセスがすでにそのポートを使用しているため、サーバーが指定されたポートにバインドできないことを示します。
問題の理由:
Node.JS には排他的アクセスが必要ですバインド先のポートを使用して、サーバーの実行中にリクエストが行われないようにします。ブラウザは一時ポートを使用するため、サーバーに接続してリクエストを行うことができます。
サーバー実装:
net.createServer(function (socket) { socket.name = socket.remoteAddress + ":" + socket.remotePort; console.log('connection request from: ' + socket.remoteAddress); socket.destroy(); }).listen(options.port);
リクエスト コード:
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { sys.puts("State: " + this.readyState); if (this.readyState == 4) { sys.puts("Complete.\nBody length: " + this.responseText.length); sys.puts("Body:\n" + this.responseText); } }; xhr.open("GET", "http://mywebsite.com"); xhr.send();
解決策:
この問題を解決するには、他のプロセスがポート 80 にバインドされていないことを確認する必要があります。これは、問題のあるプロセスを強制終了することで実現できます。次のコマンドを使用します:
killall -9 node
注意: このコマンドは、実行中のすべての Node.JS プロセスを終了するため、注意して使用してください。
終了の確認:
プロセスが終了したことを確認するには、次のコマンドを実行します:
ps ax
Node.JS プロセスがリストされていない場合、問題は解決されるはずです。
以上がNode.JS サーバーの実行時に「エラー: listen EADDRINUSE」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。