我正在测试在Windows 7上用nodejs编写的服务器 当我尝试在命令行中运行测试程序时,我收到以下错误
Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)
如何在不重新启动的情况下修复它?
答案 0 :(得分:160)
执行命令
ps -ax | grep node
你会得到类似的东西:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
然后做:
kill -9 60778
答案 1 :(得分:93)
这意味着您尝试绑定服务器的地址正在使用中。尝试使用该端口尝试其他端口或关闭程序。
答案 2 :(得分:36)
在Linux上(至少是Ubuntu衍生产品)
killall node
比这种形式更容易。
ps | grep <something>
kill <somepid>
如果你有一个孤儿挡住这个端口,它们都不会起作用。相反,这样做:
netstat -punta | grep <port>
如果端口被抓住,你会看到类似的东西:
tcp 0 0.0.0.0:<port> 0.0.0.* LISTEN <pid>/<parent>
现在用pid杀死:
kill -9 <pid>
答案 3 :(得分:35)
以下命令将为您提供正在运行的节点进程列表。
ps | grep node
要释放该端口,请使用以下命令停止该过程。
kill <processId>
答案 4 :(得分:27)
您收到错误EADDRINUSE
,因为您的应用程序想要使用的端口被另一个进程占用。要释放此端口,您需要终止占用过程。
由于您在 Windows ,因此可以使用命令提示符cmd
)终止该过程。使用cmd
,您可以发现阻止应用程序的进程ID(PID)。您需要PID才能终止/终止该过程。
以下是分步指南......
答案 5 :(得分:19)
当您收到错误时错误:收听EADDRINUSE,
尝试运行以下shell命令:
netstat -a -o | grep 8080
taskkill /F /PID 6204
我为8080编辑grep
,因为我知道我的服务器正在端口8080上运行。(static
告诉我何时启动它:'服务'。“在http://127.0.0.1:8080'。 )您可能需要搜索不同的端口。
答案 6 :(得分:15)
假设您的服务器正在port 3000
lsof -i tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 11716 arun 11u IPv6 159175 0t0 TCP *:3000 (LISTEN)
之后使用kill -9 <pid>
在上述案例中sudo kill -9 11716
答案 7 :(得分:10)
使用以下命令来终止在某个端口运行的进程 - 在下面的示例中为3000
kill -9 $(lsof -t -i:3000)
答案 8 :(得分:7)
对我有用的一个可能的解决方案就是在浏览器中关闭窗口,在那里我有相应的&#34; http://localhost:3000/&#34;脚本运行。
答案 9 :(得分:6)
当您收到错误时
错误:听EADDRINUSE
打开命令提示符并键入以下说明:
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
之后重新启动手机间隙界面。
如果您想知道哪个进程ID正在使用,请打开TASK MANAGER并查看列标题 PID 并找到PID编号
答案 10 :(得分:4)
帕特里克(Patrick)建议的上述killall -9
节点可以按预期工作并解决了问题,但是您可能希望阅读此答案的编辑部分,了解为何kill -9
可能不是最佳方法它。
最重要的是,您可能希望针对单个进程,而不是盲目地杀死所有活动进程。
在这种情况下,首先获取在该端口上运行的进程的进程ID(PID)(例如8888):
lsof -i tcp:8888
这将返回类似:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 57385 You 11u IPv6 0xac745b2749fd2be3 0t0 TCP *:ddi-tcp-1
(听) 然后就做(ps-实际上不行。请继续阅读下面的内容):
kill -9 57385
答案 11 :(得分:3)
您可以在app.js或您的项目配置文件中更改您的端口。
默认(&#39; port&#39;,80)
并查看端口80是否已在使用中,您可以执行
netstat -antp | grep 80
netstat -antp | grep node
您可能想知道节点进程是否已经运行。
ps -ef | grep node
如果您发现它已经在运行,您可以使用
将其删除killall节点
答案 12 :(得分:2)
答案 13 :(得分:2)
这在Mac上适用:
第1步。
sudo lsof -i tcp:3000 (or whatever port you want to kill)
上面的命令将为您提供当前持有端口的进程ID。
第2步。
Kill -9 <pid>
答案 14 :(得分:1)
我创建了2个服务器,在同一个端口8081上侦听,运行相同的代码,同时学习
第一个服务器创建shud工作 使用EADDRINUSE
创建第二台服务器失败node.js回调延迟可能是没有工作的原因,或者第二次服务器创建有异常,程序退出,所以第一台服务器也关闭
2服务器问题提示,我来自: How to fix Error: listen EADDRINUSE while using nodejs?
答案 15 :(得分:1)
错误:在终端netstat -nptl
中运行的Ubuntu中侦听EADDRINUSE以解决它,此后kill -9 {process-number}
此命令将终止节点进程,现在您可以尝试再次运行node server.js命令
前
听EADDRINUSE ::: 8080
netstat -nptl
tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * LISTEN -
tcp6 0 0 ::: 5900 ::: * LISTEN -
tcp6 0 0 ::: 8080 ::: * LISTEN 10401 / node
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 80 ::: * LISTEN -
tcp6 0 0 ::: 22 ::: * LISTEN -
tcp6 0 0 ::: 10137 ::: * LISTEN 9660 / java
kill -9 10401
答案 16 :(得分:0)
您将需要通过尝试在终端上使用以下命令来终止端口
$ sudo killall -9 nodejs
答案 17 :(得分:0)
我已通过在我的 package.json 中添加以下内容来杀死活动PORT- 4000 (对于我而言)在WSL2 / Linux / Mac上运行的端口中来解决此问题>
"scripts": {
"dev": "nodemon app.js",
"predev":"fuser -k 4000/tcp && echo 'Terminated' || echo 'Nothing was running on the PORT'",
}
答案 18 :(得分:0)
我使用命令netstat -ano | grep "portnumber"
来列出该进程的端口号/ PID。
然后,您可以使用taskkill -f //pid 111111
终止进程,最后一个值是您从第一个命令中找到的pid。
我有时遇到的一个问题是,即使在终止进程之后,也会重新生成节点,所以我必须使用良好的旧任务管理器来手动终止节点进程。
答案 19 :(得分:0)
就我而言,计算机重启解决了该问题。
答案 20 :(得分:0)
[已解决]
可能为时已晚,但它像一种魅力一样工作。
您需要安装pm2
npm install -g pm2
要停止当前正在运行的服务器(server.js):
pm2 stop -f server.js
答案 21 :(得分:0)
要杀死节点服务器,请先在终端中运行以下命令:
top
id
:PID number -9 kill
所以现在您杀死了节点服务器,然后再次尝试运行您的应用。答案 22 :(得分:0)
简单地杀死节点 如 pkill -9节点 在ubantu的终端 比开始节点
答案 23 :(得分:0)
ps -ef | grep节点 找到app.js, 杀死app.js的pid
答案 24 :(得分:0)
如果您更喜欢UI,请在Windows任务管理器中找到Node.js进程并将其终止。
答案 25 :(得分:0)
对于尝试过上述所有内容但仍无法找到胭脂程序的人,请再试一次,但请确保包含&#34; sudo&#34;在命令面前。
答案 26 :(得分:0)
您可能尝试在两个不同的选项卡中运行npm start命令。当它已在某个选项卡中运行时,您无法运行npm start。检查一次。
答案 27 :(得分:0)
我的Mac和Raspberry Pi上安装了节点红色。有完全相同的问题和'killall'没有帮助。一旦我关闭了Raspberry Pi并重新启动了我的电脑,它工作正常。
答案 28 :(得分:-4)
在窗口中,请执行以下命令:
taskkill /F /PID 1952