process.exit无法终止后续脚本执行,如何仅修改首个JS文件解决?
解决方案
要实现仅修改firstJavascriptFile.js就阻止shell脚本执行后续的node secondJavascriptFile.js,可以通过在第一个JS文件中直接终止父shell进程的方式实现,具体修改如下:
修改后的firstJavascriptFile.js代码:
console.log('starting first javascript file') // 终止父shell进程,中断脚本后续执行 process.kill(process.ppid) process.exit(1);
原理说明
原shell脚本默认会按顺序执行每一行命令,不管前一个命令的退出状态码(即使把process.exit(1)改成process.exit(0)也一样,shell不会因前一个命令成功就停止)。通过process.ppid可以获取当前node进程的父进程ID(也就是执行shell脚本的shell进程ID),调用process.kill()终止这个父进程,就能直接让整个shell脚本停止运行,自然不会执行后续的第二个node命令。
如果担心SIGTERM信号可能被shell捕获,可改用强制终止的SIGKILL信号:
process.kill(process.ppid, 'SIGKILL')
内容的提问来源于stack exchange,提问作者George Ji
相关产品推荐
相关产品推荐

