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

当前回答

当您希望在某个端口上运行应用程序时,将出现此错误。

如何得到哪个进程运行在该端口=> 命令: Sudo netstat -ap | grep:3000

输出:您将获得正在使用该端口的进程信息

tcp 00 IPaddress:3000: LISTEN 26869/node

现在你可以终止这个过程 须藤杀-9 26869

其他回答

EADDRINUSE意味着listen()尝试绑定服务器的端口号已经在使用中。

因此,在您的情况下,必须已经在端口80上运行服务器。

如果你有另一个web服务器在这个端口上运行,你必须把node.js放在那个服务器后面,并通过它来代理它。

你应该像这样检查监听事件,看看服务器是否真的在监听:

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);

您应该尝试杀死正在端口80上侦听的进程。

Killall将杀死所有正在运行的节点应用程序。你可能不想这么做。使用这个命令,你只能杀死一个正在监听一个已知端口的应用程序。

如果使用unix,请尝试以下命令:

sudo fuser -k 80/tcp    

Windows在开源方面总是很棘手。

更改端口就可以了

node-inspector --web-port=8099

查看哪些进程正在使用该端口也很有用。

对于macOS,我从这篇文章中发现,AirPlay使用端口5000,所以即使你使用这里列出的解决方案杀死它,它也会再次使用端口5000。快速搜索谷歌,查看哪些常见应用程序或进程正在使用导致错误的端口。

对于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优雅地退出了,但有时这并不能杀死它。我不想改变我的端口或重新启动,所以这是有效的。希望它能帮助到其他人。否则就是我自己的文档。