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

其他回答

我更喜欢做

Killall -15节点

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

Ps aux | grep节点

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

当杀死NODE_PORT时,它可能会杀死你的chrome进程或任何侦听相同端口的东西,这很烦人。

这个shell脚本可能会有帮助——在我的例子中,端口是1337,但您可以随时更改它

# LOGIC

CHROME_PIDS=`pidof chrome`
PORT_PIDS=`lsof -t -i tcp:1337`

for pid in $PORT_PIDS
do

if [[ ${CHROME_PIDS} != *$pid* ]];then

    # NOT FOUND IN CHROME PIDS

    echo "Killing $pid..."
    ps -p "$pid"

    kill -kill "$pid"
    fi

done

sails lift
# OR 'node app' OR whatever that starts your node

exit

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

node server.js

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

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

EADDRINUSE表示端口(我们在节点应用程序中尝试侦听的端口)已经被使用。为了克服这个问题,我们需要确定哪个进程正在使用该端口运行。

例如,如果我们试图在3000端口监听节点应用程序。我们需要检查该端口是否已经被任何其他进程使用。

步骤1:

$sudo netstat -plunt |grep :3000

上面的命令给出下面的结果。

tcp6       0      0 :::3000                 :::*                    LISTEN      25315/node

步骤2:

现在您获得了进程ID(25315),杀死该进程。

kill -9 25315

步骤3:

npm run start

注意:此解决方案适用于linux用户。

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

更改端口就可以了

node-inspector --web-port=8099