在节点中使用fork子进程时如何捕获错误?

时间:2018-08-09 20:59:35

标签: node.js electron child-process electron-packager

我正在使用fork方法在电子应用程序中生成一个子进程,我的代码如下所示:

'use strict'
 const fixPath = require('fix-path');

 let func = () => {
   fixPath();   
   const child = childProcess.fork('node /src/script.js --someFlags', 
   {
     detached: true, 
     stdio: 'ignore',
   }

 });

 child.on('error', (err) => {
   console.log("\n\t\tERROR: spawn failed! (" + err + ")");
 });

 child.stderr.on('data', function(data) {
   console.log('stdout: ' +data);
 });

 child.on('exit', (code, signal) => {
   console.log(code);
   console.log(signal);
 });

 child.unref();

但是我的子进程会立即退出,并显示退出代码1并发出信号,是否有办法捕获此错误?当我使用childprocess.exec方法时,我可以使用stdout.on('error'...进行捕获。fork方法是否也有类似的东西?如果没有关于如何解决此问题的建议?

1 个答案:

答案 0 :(得分:0)

设置选项'silent:true',然后使用事件处理程序stderr.on(),我们可以捕获错误(如果有)。请检查以下示例代码:

 let func = () => {
   const child = childProcess.fork(path, args, 
   {
     silent: true,
     detached: true, 
     stdio: 'ignore',
   }

 });

 child.on('error', (err) => {
   console.log("\n\t\tERROR: spawn failed! (" + err + ")");
 });

 child.stderr.on('data', function(data) {
   console.log('stdout: ' +data);
 });

 child.on('exit', (code, signal) => {
   console.log(code);
   console.log(signal);
 });

 child.unref();