这里的问题是,在第一次运行后不会正常退出节点进程。因此,节点仍绑定到该端口。使用 ps aux | grep node
, 将显示这一点。使用 CTRL+C 退出应用程序,而不是使用 CTRL+Z 终止应用程序。这将正常退出应用程序,并删除端口绑定。
以正确的方式退出进程将在关闭时释放该端口。这将允许你重新启动该过程,而无需在能够重新运行它之前自行终止它的麻烦。
有一种方法是 killall -9 node
或 在控制台输入lsof -i:端口号,查看被占用进程的pid,再输入 kill -9 pid 即可杀死进程。这些方法按预期工作并解决问题,但你可能想要知道为什么 kill-9 可能不是最好的方法。
最重要的是,您可能希望以单个进程为目标,而不是盲目地终止所有活动进程。
在这种情况下,首先获取该端口上运行的进程的流程 ID (PID)(例如 3000):
lsof -i tcp:3000
这将返回类似内容:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 64419 samyao 22u IPv6 0x881da4f2a0d52ded 0t0 TCP *:3000 (LISTEN)
然后就做