Javascript 终端窗口关闭时,Nodemon未终止macOS Big Sur上的Node.js进程

Javascript 终端窗口关闭时,Nodemon未终止macOS Big Sur上的Node.js进程,javascript,node.js,macos,nodemon,macos-big-sur,Javascript,Node.js,Macos,Nodemon,Macos Big Sur,自从更新到macOS Big Sur版本11.0.1(20B29)以来,我一直遇到一个问题,即当服务器使用nodemon启动时,当我关闭终端窗口/选项卡(ZSH)时,Node.js进程没有被终止。看起来他们被切换到了一个新的流程,而这个新流程保持了活力 例如,如果运行npm run dev,服务器将正常启动: ... [nodemon] starting `node dist/index.js` server started on 5000 在另一个终端选项卡中,我运行lsof-I tcp:5

自从更新到macOS Big Sur版本11.0.1(20B29)以来,我一直遇到一个问题,即当服务器使用nodemon启动时,当我关闭终端窗口/选项卡(ZSH)时,Node.js进程没有被终止。看起来他们被切换到了一个新的流程,而这个新流程保持了活力

例如,如果运行npm run dev,服务器将正常启动:

...
[nodemon] starting `node dist/index.js`
server started on 5000
在另一个终端选项卡中,我运行
lsof-I tcp:5000
并查看:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    80310   <user>  27u  IPv6 ...99e293      0t0  TCP *:commplex-main (LISTEN)
因此,端口保持活动状态,但该类型具有新的PID和新的IPv6

我应该注意两点:

  • 如果我使用Control+C中止进程,它将按预期工作
  • 一旦您更新了项目中的文件,进程就会停止

  • 有人遇到过这个问题并找到了解决方案吗?

    自从我开始使用nodemon以来,我也遇到过同样的问题。我不知道为什么会发生这种情况,但是,我现在每次都要确保
    CTRL
    +
    C
    。如果有一种方法可以在关闭时终止它,那将非常有帮助。我对此不是100%确定,但99%确定。我整个上午都在研究这个问题,看着过程来来去去去……或者不去,视情况而定。我相信当您通过关闭shell来终止一个进程时,它会向nodemon进程发送一个SIGKILL事件。因为SIGKILL是即时的,就像运行kill-9PID xxxx一样,程序无法截获事件并将其传播到子进程。当您按ctrl-C键停止进程时,它会发送一个SIGINT,子进程可以截取并响应该SIGINT,这就是它们正常关闭的原因。
    COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    node    80625   <user>  25u  IPv6 ...8a2293      0t0  TCP *:commplex-main (LISTEN)