如果我使用端口 80 运行服务器,并尝试使用XMLHttpRequest,我会收到此错误:Error: listen EADDRINUSE
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()尝试绑定服务器的端口号已被使用。
EADDRINUSE
listen()
因此,在您的情况下,必须已经在端口 80 上运行服务器。
如果您在此端口上运行另一个网络服务器,则必须将 node.js 放在该服务器后面并通过它进行代理。
你应该检查listening这样的事件,看看服务器是否真的在监听:
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);