这是我第一次使用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 10上运行良好

taskkill /f /im node.exe

其他回答

你可以试试这个:

taskkill /IM node.exe -F

你可以试试

killall node

你也可以试试

killall nodejs

您可以使用lsof获取已绑定到所需端口的进程。

不幸的是,不同系统的标志似乎不同,但在Mac OS X上可以运行

lsof -Pi | grep LISTEN

例如,在我的机器上,我得到这样的东西:

mongod     8662 jacob    6u  IPv4 0x17ceae4e0970fbe9      0t0  TCP localhost:27017 (LISTEN)
mongod     8662 jacob    7u  IPv4 0x17ceae4e0f9c24b1      0t0  TCP localhost:28017 (LISTEN)
memcached  8680 jacob   17u  IPv4 0x17ceae4e0971f7d1      0t0  TCP *:11211 (LISTEN)
memcached  8680 jacob   18u  IPv6 0x17ceae4e0bdf6479      0t0  TCP *:11211 (LISTEN)
mysqld     9394 jacob   10u  IPv4 0x17ceae4e080c4001      0t0  TCP *:3306 (LISTEN)
redis-ser 75429 jacob    4u  IPv4 0x17ceae4e1ba8ea59      0t0  TCP localhost:6379 (LISTEN)

第二个数字是PID,他们正在监听的端口在“(LISTEN)”之前的右边。找到流氓PID和杀死-9 $PID终止与极端偏见。

在Windows命令中 输入命令blow:

任务杀戮 /f /im 节点.exe

因为你指定了Windows。如果您希望在bat文件中包含此文件,则可能不希望在进程未运行时生成错误。

所以,为了防止"ERROR: The process "node.exe" not found.",你可以添加一个过滤器:

TASKKILL /F /IM node.exe /FI "PID gt 0"