当我在 nodejs 中有自定义 process.on('exit') 时,端口未释放

Asw*_*sad 1 node.js express

当我一般使用Ctrl+c(mac)停止节点进程时,该进程被杀死并释放端口。当我使用 process.on('SIGINT') 时,进程不会自动终止,我必须手动终止端口中的进程。为什么会出现这种行为?我是否会覆盖执行中的任何默认退出代码片段?

process.on('SIGINT', (code) => {
    console.log(`About to exit with code: ${code}`);
});
Run Code Online (Sandbox Code Playgroud)

Sto*_*law 5

根据节点的文档

'SIGTERM''SIGINT'在非 Windows 平台上具有默认处理程序,可在使用 code 退出之前重置终端模式128 + signal number如果这些信号之一安装了侦听器,则其默认行为将被删除(Node.js 将不再退出)。

所以是的,您正在覆盖默认行为。如果 - 当 - 你完成了信号的处理,你可以调用process.exit()来实际终止程序 - 在可能的侦听器'exit'运行之后。