如果我运行一个端口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();

当前回答

我也有同样的问题,我只是关闭终端并打开一个新终端并运行

node server.js

一次。这对我来说是有效的,有时只需要等待几秒钟,直到它再次工作。

但这只适用于开发人员机器,而不是服务器控制台。

其他回答

对于windows 10上的其他人来说,node是localhost,端口是3500,而不是80…

不奏效的:

killall    ?  command not found
ps -aux | grep 'node'     ?     ps:  user x unknown 

显示信息但仍然不起作用的:

 ps -aef | grep 'node'
 ps ax
 kill -9 61864

哪些方法有效:

Git Bash或Windows上的Powershell

  net -a -o | grep 3500   (whatever port you are looking for) 

注意PID(最右边) 我不能让所有人都去工作……所以

打开任务管理器 在进程选项卡上,右键单击名称或任何列,并选择包含PID 按PID排序,然后右键单击右PID,然后单击结束任务。

现在,在windows上不那么有趣的练习之后,我意识到我可以使用任务管理器,找到Node引擎,然后结束它。

仅供参考,我使用Visual Studio代码在端口3500上运行节点,我在VS代码中使用Git Bash shell。我已经用Ctrl + C优雅地退出了,但有时这并不能杀死它。我不想改变我的端口或重新启动,所以这是有效的。希望它能帮助到其他人。否则就是我自己的文档。

错误:listen EADDRINUSE表示要分配/绑定到应用服务器的端口已经在使用中。您可以为您的应用程序分配另一个端口。

或者如果你想给应用程序分配相同的端口。然后杀死在你想要的端口上运行的应用程序。

对于一个节点应用程序,你可以尝试的是,找到节点应用程序的进程id:

ps -aux | grep node

在获得进程id之后,执行

kill process_id

这适用于我(我使用mac)。执行此命令

lsof -PiTCP -sTCP:LISTEN

这将显示系统正在使用的端口列表。找到您的节点正在运行的PID

COMMAND     PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node      17269 hientrq   16u  IPv6 0xc42959c6fa30c3b9      0t0  TCP *:51524 (LISTEN)
node      17269 hientrq   19u  IPv4 0xc42959c71ae86fc1      0t0  TCP localhost:1337 (LISTEN)

运行kill -9 [YOUR_PID]

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

在我的情况下,我使用一个虚拟主机,但它在本地主机是一样的,我使用:

ps -aef | grep 'node' 

对于节点进程的监视,控制台用PID显示进程。 要杀死进程,你必须使用这个命令:

kill -9 PID

其中PID是上面命令中的进程id。