如果我运行一个端口80的服务器,我尝试使用XMLHttpRequest,我得到这个错误

为什么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();

当前回答

只是一个头,Skype有时会监听端口80,因此导致这个错误,如果你试图从Node.js或任何其他应用程序监听端口80。

你可以在Skype中通过访问选项并单击高级->连接->使用端口80(取消勾选)来关闭该行为

P.S.在做了这个改变后,不要忘记重新启动Skype!

其他回答

EADDRINUSE表示你的nodejs应用的端口已经被使用。

现在你已经杀死了在该端口上运行的进程/应用程序。 通过以下方式查找app的进程id:

-i tcp:3000

现在你会从这里得到进程id。 运行这个:

kill -9 进程 ID

当我们意外地在同一个实例中有两个本地Express环境指向同一个端口时,得到此错误。

如果你已经找到了这些答案,我希望这将有助于解决你的问题。

另一个可能产生此错误的是相同节点代码中的两个HTTP服务器。我正在更新一些Express 2到Express 3的代码,然后有了这个…

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});        

// tons of shit.

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});                                                                   

它触发了这个错误。

这发生在我身上是因为我的服务器在另一个终端窗口中运行。关闭连接解决了问题。

在下面的命令替换您的端口编号

sudo lsof -t -i tcp:portNumber | xargs kill -9