Answers:
这表示您正在尝试将服务器绑定到的地址。尝试另一个端口或使用该端口关闭程序。
node app.js
Ctrl + C并停止使用它时,它可以正常工作,但是在我第一次使用后就开始出现EADDRINUSE问题npm start
,因此看来真正的解决方案是使用Ctrl + C以外的其他功能来关闭它npm start
。
npm start
脚本可能是多个节点程序,或者是在后台运行的节点程序,或者该程序可能包含使用该端口的子进程。
ps aux | grep node
,找到了进程ID(第二列),然后用kill <pid>
(mine was kill 18762
)将其杀死。
跑:
ps -ax | grep node
您会得到类似以下内容:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
然后做:
kill -9 60778
kill -15 60778
会好很多,因为SIGTERM
如果发送SIGKILL
在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>
<pid>/<parent>
我意料的是-
以下命令将为您提供正在运行的节点进程的列表。
ps | grep node
要释放该端口,请使用以下命令停止该过程。
kill <processId>
| grep -v grep
以排除该grep
过程。
pidof node
pidof
很容易安装,我与自制OSXbrew install pidof
您收到错误消息EADDRINUSE
是因为您的应用程序要使用的端口已被另一个进程占用。要释放此端口,您需要终止占用过程。
由于您使用的是Windows,因此可以使用命令提示符(cmd
)终止该过程。使用,cmd
您可以发现阻止应用程序的进程ID(PID)。您将需要PID才能终止/终止进程。
这是逐步指南...
查找在指定端口上运行的所有进程(在此示例中,端口为“ 3000”):
netstat -ano | 找到“:3000”
该netstat
命令将列出在指定端口上运行的所有进程。在结果的最后一栏中,netstat
您可以看到PID
s(在此示例中,PID为“ 8308”)。您可以PID
通过运行以下命令来查找有关特定内容的更多信息:
任务列表/ fi“ pid eq 8308”
如果要终止进程,则可以使用以下命令来执行PID
此操作(在此示例中,PID为“ 8308”):
taskkill / pid 8308 / f
屏幕截图
当您收到错误消息错误:监听EADDRINUSE,
尝试运行以下shell命令:
netstat -a -o | grep 8080
taskkill /F /PID 6204
我grep
使用8080,因为我知道我的服务器正在8080端口上运行。(static
启动时会告诉我:“在http://127.0.0.1:8080上提供“。” 。)您可能必须搜索其他内容港口。
假设您的服务器正在运行 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
使用以下命令杀死在某个端口上运行的进程-在以下示例中为3000
kill -9 $(lsof -t -i:3000)
对我有用的一种可能的解决方案是,仅在浏览器中关闭运行我相应的“ http:// localhost:3000 / ”脚本的窗口。
当您遇到错误时
错误:听EADDRINUSE
打开命令提示符并键入以下说明:
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
之后,重新启动手机差距界面。
如果您想知道phonegap使用的是哪个进程ID,请打开TASK MANAGER,查看列标题PID,找到PID号。
killall -9
Patrick所建议的上述节点可以按预期工作,并且可以解决问题,但是您可能希望阅读此答案的编辑部分,以了解为什么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
您可以在app.js或您的项目配置文件中更改端口。
默认值('port',80)
并查看端口80是否已在使用中,您可以执行
netstat -antp | grep 80
netstat -antp | grep节点
您可能想查看节点进程是否已在运行。
ps -ef | grep节点
如果发现它已经在运行,则可以使用
Killall节点
我创建了2台服务器,在相同的端口8081上侦听,使用相同的代码运行,同时学习
第一个服务器创建工作正常,第二个服务器创建失败,出现EADDRINUSE
node.js回调延迟可能是无法运行或第二台服务器创建异常并退出程序的原因,因此第一台服务器也已关闭
2服务器问题提示,我来自: 如何解决错误:使用nodejs时听EADDRINUSE?
错误:听EADDRINUSE来解决它在Ubuntu运行在终端netstat -nptl
并在此之后kill -9 {process-number}
这个命令是杀死节点的过程,现在你可以尝试再次运行节点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 /节点
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 80 ::: * LISTEN-
tcp6 0 0 ::: 22 ::: * LISTEN-
tcp6 0 0 ::: 10137 ::: *听9660 / java
杀死-9 10401
netstat
接收不同的参数。netstat -a -p tcp -b -v
将输出进程名称。
只需杀死ubantu终端中的pkill -9节点即可,而不是终止节点
您需要通过尝试在终端上使用以下命令来杀死端口
$ sudo killall -9 nodejs
要杀死节点服务器,请首先在终端中运行以下命令:
top
id
从上一个窗口复制服务器:PID number -9 kill
所以现在您杀死了节点服务器,然后再次尝试运行您的应用程序。
sudo killall node
可能会派上用场