我有简单的节点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服务器。有人可以帮忙。
答案 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)
ps
,然后可以获得进程列表node
的进程,并注意Id
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
-我认为节点开发服务器的PID
是27599
然后杀死:
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