一尘不染

如何解决错误:使用nodejs时监听EADDRINUSE?

javascript

如果我使用端口80运行服务器,并且尝试使用xmlHTTPrequest,则会出现此错误:Error: listen EADDRINUSE

如果我要在端口80上运行服务器时发出请求,为什么nodejs会出现问题?对于网络浏览器来说,这不是问题:在服务器运行时,我可以在Internet上冲浪。

服务器是:

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

阅读 308

收藏
2020-04-25

共1个答案

一尘不染

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);
2020-04-25