如何修复错误:在使用NodeJS时侦听EADDRINUSE?

如何修复错误:在使用NodeJS时侦听EADDRINUSE?

如果我运行一个端口为80的服务器,并且尝试使用XMLHttpRequest我知道这个错误:Error: listen EADDRINUSE

当我在端口80上运行服务器时,如果我想执行一个请求,为什么NodeJS会出现问题呢?对于浏览器来说,这不是一个问题:我可以在互联网上冲浪,而服务器正在运行。

服务器是:

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


慕容3067478
浏览 660回答 3
3回答

长风秋雁

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

小怪兽爱吃肉

真正帮助我的是:killall -9 node但这会扼杀一个系统进程。带着ps ax你可以检查它是否有效。
打开App,查看更多内容
随时随地看视频慕课网APP