这是我第一次使用Node.js,我遇到了这个问题:

我已经通过IDE的插件启动了Node服务器。不幸的是,我不能使用IDE的终端。所以我尝试从命令行运行脚本。

这就是问题所在——我正在使用Express模块,我的应用程序正在监听一些端口(8080)。当我从命令行启动应用程序时,它抛出以下错误:

events.js:71
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: listen EADDRINUSE
    at errnoException (net.js:770:11)
    at HTTPServer.Server._listen2 (net.js:910:14)
    at listen (net.js:937:10)
    at HTTPServer.Server.listen (net.js:986:5)
    at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

尽管我不太确定这个错误是什么,但我假设这是因为应用程序正在监听一个已经在使用的端口。于是我做了:

netstat -an

我能看到

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

这是因为当我试图从IDE启动Node服务器时,它已经启动了。

我想知道,如何停止所有服务器实例?还有,如果你能告诉我如何检测端口上运行的程序并关闭它。


当前回答

如果你使用的是Windows,请遵循以下步骤:

打开任务管理器,查看这个过程: 然后右键点击“结束任务”它。 就是这样,现在所有的npm命令都从头开始运行。

其他回答

你可以试试

killall node

你也可以试试

killall nodejs

多平台、稳定、最佳解决方案:

使用fkill杀死正在占用你端口的进程:

fkill -f :8080

安装fkill使用命令:npm i -g fkill

如果你想杀死一个特定的节点进程,你可以进入命令行route并输入:

ps aux | grep node

获取所有节点进程id的列表。现在可以获得进程id(pid)了 做的事:

kill -9 PID

如果你想杀死所有的节点进程,那么执行:

killall -9 node

-9开关类似于windows上的结束任务。它会迫使整个过程结束。 你可以:

kill -l

查看所有kill命令开关及其注释。

Windows & GitBash终端 我需要在Windows / Webstorm / GitBash终端中使用这个命令

cmd "/C TASKKILL /IM node.exe /F"

Linux

给你的朋友留下深刻印象

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9

但这是你会记住的

killall node