Node.JS サーバーの実行時に「エラー: listen EADDRINUSE」が発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-19 13:03:03
オリジナル
273 人が閲覧しました

Why Am I Getting the

エラーの修正: Node.JS 使用時の EADDRINUSE

問題の概要:

ポートでサーバーを実行しようとしたとき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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート