如何从Error中释放localhost:listen EADDRINUSE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Error中释放localhost:listen EADDRINUSE相关的知识,希望对你有一定的参考价值。
我正在测试在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)
如何在不重新启动的情况下修复它?
这意味着您尝试绑定服务器的地址正在使用中。尝试使用该端口的其他端口或关闭程序。
当你收到错误
错误:听EADDRINUSE
打开命令提示符并键入以下指示信息:
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
之后重新启动手机间隙界面。
如果您想知道哪个进程ID正在使用,请打开TASK MANAGER并查看Column标题PID并找到PID no。
检查进程ID
sudo lsof -i:8081
比杀死特定的进程
sudo kill -9 2925
帕特里克提出的上述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
您可以在app.js或项目配置文件中更改端口。
默认('端口',80)
并查看端口80是否已在使用中,您可以这样做
netstat -antp | grep 80
netstat -antp | grep节点
您可能想知道节点进程是否已经运行。
ps -ef | grep节点
如果你发现它已经在运行,你可以使用它来杀死它
killall节点
这适用于Mac:
步骤1。
sudo lsof -i tcp:3000 (or whatever port you want to kill)
上面的命令将为您提供当前持有端口的进程ID。
第2步。
Kill -9 <pid>
我创建了2个服务器,在相同的端口8081上侦听,运行相同的代码,同时学习
第一个服务器创建shud工作第二个服务器创建失败EADDRINUSE
node.js回调延迟可能是没有工作的原因,或者第二个服务器创建有异常,程序退出,所以第一个服务器也关闭
2服务器问题提示,我来自:How to fix Error: listen EADDRINUSE while using nodejs?
错误:听EADDRINUSE解决它在终端netstat -nptl
中运行的Ubuntu中,并且在此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
杀了-9 10401
我的Mac和Raspberry Pi上安装了节点红色。有完全相同的问题和'killall'没有帮助。一旦我关闭了Raspberry Pi并重新启动了我的电脑,它工作正常。
您可能尝试在两个不同的选项卡中运行npm start命令。当它已经在某些选项卡中运行时,您无法运行npm start。检查一次。
对于已经尝试了上述所有内容但仍无法找到胭脂程序的人,请再次尝试,但请确保在命令前加入“sudo”。
跑:
ps -ax | grep node
你会得到类似的东西:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
然后做:
kill -9 60778
如果您更喜欢UI,请在Windows任务管理器中找到Node.js进程并将其终止。
ps -ef | grep node找到app.js,杀死app.js的pid
只需将节点杀死为ubuntu终端中的pkill -9节点,然后启动节点
要终止节点服务器,请先在终端中运行此命令:
top
- 打开另一个窗口然后从上一个窗口复制服务器
id
:PID number -9 kill
所以现在你杀了你的节点服务器再次尝试运行你的应用程序。
就我而言,机器重启解决了这个问题。
我使用命令netstat -ano | grep "portnumber"
列出该进程的端口号/ PID。然后,您可以使用taskkill -f //pid 111111
来终止进程,最后一个值是您从第一个命令中找到的pid。
我遇到的一个问题是即使在杀死进程后节点重新生成,所以我必须使用好的旧任务管理器来手动终止节点进程。
在窗口中,请执行以下命令:
taskkill /F /PID 1952
在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>
以下命令将为您提供正在运行的节点进程列表。
ps | grep node
要释放该端口,请使用以下命令停止该过程。
kill <processId>
您收到错误EADDRINUSE
,因为您的应用程序想要使用的端口被另一个进程占用。要释放此端口,您需要终止占用过程。
由于您使用的是Windows,因此可以使用命令提示符(cmd
)终止该过程。使用cmd
,您可以发现阻止应用程序的进程ID(PID)。您将需要PID以终止/终止该过程。
这是一个循序渐进的指南......
- 查找在指定端口上运行的所有进程(在此示例中,Port为“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
ed为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/”脚本。
以上是关于如何从Error中释放localhost:listen EADDRINUSE的主要内容,如果未能解决你的问题,请参考以下文章
如何在 localhost Windows 上释放我的端口 80?
如何在 localhost Windows 上释放我的端口 80?
如何在 localhost Windows 上释放我的端口 80?
如何在 localhost Windows 上释放我的端口 80?
list在erase之后就释放内存,vector也可以通过swap操作来删除,请问dequeue如何释放已删除元素的内存?