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

其他回答

如果你在nodejs中使用docker image,只需停止容器:

获取nodejs的CONTAINER_ID

docker ps

停止它

docker stop CONTAINER_ID

或者如果你使用docker compose

docker compose stop nodejs_service_name

似乎有另一个Node ng服务进程正在运行。在你的控制台(Linux/Mac)中输入以下内容进行检查:

ps aux|grep node

然后用:

kill -9 <NodeProcessId>

或替代使用

ng serve --port <AnotherFreePortNumber>

在你选择的自由港口为你的项目服务。

我更喜欢做

Killall -15节点

因为kill -15给了进程一个自我清理的机会。 现在,你可以通过

Ps aux | grep节点

注意:如果您不给进程一个机会来完成它当前正在做的事情并进行清理,可能会导致文件损坏

我最近也遇到了同样的问题。

这意味着该端口已经被另一个应用程序(express或其他软件)使用。

在我的情况下,我不小心在2个终端上运行express,所以使用“Ctrl + C”退出终端为我解决了问题。(只从一个终端运行服务器)

希望它能帮助别人。

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

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

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

tcp 00 IPaddress:3000: LISTEN 26869/node

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