1. ホーム
  2. javascript

[解決済み] NodeJSの使用中にError: listen EADDRINUSEを修正する方法は?

2022-02-08 20:09:15

質問

80番ポートのサーバーで XMLHttpRequest このようなエラーが発生します。 Error: listen EADDRINUSE

NodeJSで80番ポートでサーバを動作させながらリクエストを行うと、なぜ問題が発生するのでしょうか?ウェブブラウザでは問題ありません。サーバーが動作している間、ネットサーフィンができます。

サーバーは

  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();

解決方法は?

EADDRINUSE というのは listen() は、すでに使用されているサーバーにバインドしようとしています。

つまり、あなたの場合、すでに80番ポートでサーバーが稼働しているはずなのです。

このポートで別のWebサーバーが動作している場合は、そのサーバーの後ろにnode.jsを置き、それを経由してプロキシする必要があります。

を確認する必要があります。 listening イベントが発生し、サーバーが本当にリッスンしているかどうかを確認するために、このようにします。

var http=require('http');

var server=http.createServer(function(req,res){
    res.end('test');
});

server.on('listening',function(){
    console.log('ok, server is running');
});

server.listen(80);