如果我使用端口80运行服务器,并且尝试使用xmlHTTPrequest,则会出现此错误:Error: listen EADDRINUSE
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();
EADDRINUSE表示listen()试图将服务器绑定到的端口号已被使用。
EADDRINUSE
listen()
因此,在您的情况下,必须已经在端口80上运行了服务器。
如果在此端口上运行其他Web服务器,则必须将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);