node js侦听简单httpserver的EADDRINUSE错误

时间:2012-02-09 02:43:38

标签: node.js httpserver

我有简单的节点js http服务器。

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);

如果我跑

node basicserver.js 

我得到了

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:642:11)
    at Array.0 (net.js:743:26)
    at EventEmitter._tickCallback (node.js:192:40)

我看过this帖子,但该帖子似乎特定于TCP服务器而不是http服务器。有人可以帮忙。

7 个答案:

答案 0 :(得分:25)

您正在侦听的端口已被另一个进程监听。在这种情况下,我感觉这是你的自我。您可以执行ps aux | grep node,然后使用kill <pid>终止您的节点进程。除此之外,您还可以尝试其他端口。

- 更新 -

如果您想查找正在侦听的进程,可以使用netstat -lpn-l查找侦听端口,-p是否包含进程名称和pid ,-n是不解析主机名,否则会很慢,找到正在侦听不同端口的进程。如果太多,您可以netstat -lnp | grep :8888

也可以使用fuser 8888/tcp,它会显示进程pid,并且添加-k会以最快的方式终止进程。

我意识到这两个命令只适用于 linux

答案 1 :(得分:7)

我最喜欢杀死我机器上的所有实验......

 killall node

答案 2 :(得分:2)

尝试运行服务器时可能会出现同样的问题,但您没有root权限。

答案 3 :(得分:2)

您正在监听的端口已经被另一个进程监听。

遇到此错误时,我使用Windows PowerShell终止了该进程(因为我使用Windows)

  1. 打开Windows Powershell
  2. 键入ps,然后可以获得进程列表
  3. 找到名为node的进程,并注意Id
  4. 键入Stop-process <Id>

我认为这对Windows用户有帮助。

答案 4 :(得分:0)

我也在使用EADDRINUSE 127.0.0.1时遇到了这个问题。检查节点进程后,我将服务器IP更改为&#39; localhost&#39;。这样做之后就开始了。希望这会有所帮助。

答案 5 :(得分:0)

在我的Linux Mint上,仅被PID杀了为我工作:

netstat -nltp | grep 8080-显示PID使用8080端口,我的输出:

tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 27599/node-我认为节点开发服务器的PID27599

然后杀死:

kill -9 <PID>

kill -9 27599

序言:

不知道是什么错误,但是我要启动npm run dev之类的WebPack开发服务器:

webpack-dev-server --hot --host int.loc --port 8080

当他打扰他时-在Ctrl+C终端再次启动它-他造成了相同的错误Error: listen EADDRINUSE 127.0.0.1:8080,但是一直到错误为止。

killall node没有帮助。

答案 6 :(得分:0)

对于Windows用户:在Powershell中,您可以使用:

Stop-Process -Name "ProcessName" -Force

在这种情况下,"ProcessName"将是"node"

此处有更多信息:How to kill a process in windows