nodejs:不要等待衍生进程

时间:2018-01-03 16:00:48

标签: node.js child-process

我正在使用child_process.spawn来运行某个应用,我希望在此应用启动后执行一些操作。但是spawn阻止了主要进程

const spawnAsync = Promise.promisify(require('child_process').spawn);
console.log('BEFORE');   
await spawnAsync('../node_modules/.bin/some-app', ['-p', '3333'], {
    detached: true
});
console.log('AFTER');

在我的控制台中,我看到只有在BEFORE端口上的终止进程后才会记录AFTER3333。我不想等待催生的过程,我想在spawnSync致电后做一些动作。

1 个答案:

答案 0 :(得分:1)

查看spawn文档,你应该这样使用

      const childProcess = require('child_process');

      const newProcessDescriptor = childProcess.spawn(
          '../node_modules/.bin/some-app', 
          ['-p', '3333'], {
          detached: true
        },
      );

      newProcessDescriptor.on('error', (error) => {
        console.log(`child process creating error with error ${error}`);
      });

      newProcessDescriptor.on('close', (code) => {
        console.log(`child process exited with code ${code}`);
      });