【问题标题】:How to catch error while using fork child process in node?在节点中使用 fork 子进程时如何捕获错误?
【发布时间】:2019-01-17 10:19:46
【问题描述】:

我正在使用 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'...

【问题讨论】:

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


    【解决方案1】:

    设置选项 '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();
    

    【讨论】:

      猜你喜欢
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多