在我的开发环境中,我使用npm-run-all
(run-p
(并行运行两个npm脚本:wach模式下的typescript编译器;以及我的服务器和nodemon。当我达到CTRL+C
时,我正试图优雅地关闭服务器,但似乎SIGINT
和SIGTERM
都没有被捕获。有人能认出问题出在哪里吗?
我在Windows、npm-run-all@^4.1.5
和nodemon@^2.0.20
上使用Node v18.3.0。
(我也尝试过使用concurrently
,但遇到了同样的问题…(
package.json:
"scripts": {
"build": "tsc",
"start": "node --enable-source-maps ./dist/index.js",
"dev": "npm run build && run-p dev:*",
"dev:build": "tsc -w",
"dev:run": "nodemon ./dist/index.js"
}
/dist/index.js:
const shutdown = () => {
httpServer.stop()
socketServer.stop()
}
process.once('SIGINT', shutdown)
process.once('SIGTERM', shutdown)
NPM会吞下SIGTERM/SIGINT信号,因此要优雅地关闭应用程序,请不要使用npm run
,而是使用node
本身