问题概述:
尝试在端口上运行服务器时80 使用 XMLHttpRequest 执行请求时,可能会出现错误“Error:listen EADDRINUSE” Node.JS。此错误表明服务器无法绑定到指定端口,因为另一个进程已在使用该端口。
问题原因:
Node.JS 需要独占使用它绑定的端口,防止在服务器运行时发出请求。浏览器可以连接到服务器并发出请求,因为它们使用临时端口。
服务器实现:
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();
解决方案:
要解决此问题,需要确保没有其他进程绑定到端口 80。这可以通过使用以下命令杀死有问题的进程来实现命令:
killall -9 node
注意:此命令将终止所有正在运行的 Node.JS 进程,因此请谨慎使用。
验证终止:
要验证进程是否已终止,请运行以下命令命令:
ps ax
如果没有列出 Node.JS 进程,则问题应该得到解决。
以上是为什么我在运行 Node.JS 服务器时收到'错误:listen EADDRINUSE”?的详细内容。更多信息请关注PHP中文网其他相关文章!