我正在尝试将我的 Node 应用程序作为 Grunt 任务运行。但是,我需要将其作为子进程生成,以允许我并行运行监视任务。
这有效:
grunt.registerTask('start', function () {
grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
但是,当 watch 任务检测到变化时,这会再次触发 start 任务。在生成 Node 应用程序的另一个子进程之前,我需要杀死前一个子进程。
但是,我不知道如何终止该进程。像这样的东西不起作用:
var child
grunt.registerTask('start', function () {
if (child) child.kill()
child = grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
看起来:
- 即使我将生成的进程存储在函数上下文之外的变量中,它也不会持续存在,因此下次运行启动任务时,child 是
undefined
. child
没有kill
功能……</li>