Node.js 使用Fork从子级向父级发送错误

Node.js 使用Fork从子级向父级发送错误,node.js,fork,fork-join,Node.js,Fork,Fork Join,我有下面的代码 // Parent.js var cp = require('child_process'); var child = cp.fork('./pChild.js'); child.on('message', function(m) { // Receive results from child process console.log('received: ' + m); }); // Send child process some work child.se

我有下面的代码

// Parent.js

var cp = require('child_process');
var child = cp.fork('./pChild.js');

child.on('message', function(m) {
    // Receive results from child process
    console.log('received: ' + m);
});

// Send child process some work
child.send('First Fun');

如何处理从pChild.js抛出的父进程中的错误并终止进程?

子进程中未处理的错误将导致其退出,这将在子对象上发出错误

如果在子系统中处理了错误,则可以将其作为另一条消息发送:

// in pChild.js
/* ... */.on('error', function (error) {
    process.send({ error: error.message || error });
});
最新答案 关于孩子

process.on('uncaughtException', (err) => {
    process.send({isError: true});
});
论主人

 master.on('message',({isError, data})=>{
    if(isError) {
         master.kill('SIGINT');
         return;
    }
    console.log('message from child', data);
    master.kill('SIGINT');
 });

子进程中未处理的错误将导致其退出,这将在子对象上发出错误

如果在子系统中处理了错误,则可以将其作为另一条消息发送:

// in pChild.js
/* ... */.on('error', function (error) {
    process.send({ error: error.message || error });
});
最新答案 关于孩子

process.on('uncaughtException', (err) => {
    process.send({isError: true});
});
论主人

 master.on('message',({isError, data})=>{
    if(isError) {
         master.kill('SIGINT');
         return;
    }
    console.log('message from child', data);
    master.kill('SIGINT');
 });

孩子呢?在“退出”时,回调;和从pchild.js抛出/发送?@Amol M Kulkarni请检查我在下面的最后评论,并为我提供一些关于child的建议。在“退出”时,回调;和从pchild.js抛出/发送?@Amol M Kulkarni请检查我在下面的最后一条评论,并向我提供一些建议。错误在子进程中处理。在“消息”中,函数M{console.loghellooo from pChild.js var a=-5;如果a=-5抛出新错误'**id必须为正'//将结果传递回父进程进程。sendFun1 complete;};父进程应该知道哪个进程失败,同时必须知道所有挂起的子进程killed@user87267867好的,这个代码片段没有显示错误是如何处理的。只是它是如何抛出的。需要一个try…catch或.on'error',…绑定来处理它。否则,“exit”事件应该在父级内发出。但是r未在父进程中得到处理。在“消息”上,函数M{console.loghelloooo from pChild.js var a=-5;如果a=-5抛出新错误“*****id必须为正”//将结果传回父进程process.sendFun1 complete;}。在“错误”上,函数错误{process.send{Error:Error.message | Error};};错误在子进程中处理。在“消息”上,函数m{console.loghelloooo from pChild.js var a=-5;如果a=-5,则抛出新错误“*****id必须为正”//将结果传回父进程。sendFun1 complete;};父进程应该知道哪个进程失败,同时必须知道所有挂起的子进程killed@user87267867好的,这个代码片段没有显示错误是如何处理的。只是它是如何抛出的。需要一个try…catch或.on'error',…绑定来处理它。否则,“exit”事件应该在父级内发出。但是r未在父进程中得到处理。在“消息”上,函数M{console.loghelloooo from pChild.js var a=-5;如果a=-5抛出新错误“*****id必须为正”//将结果传回父进程process.sendFun1 complete;}。在“错误”上,函数错误{process.send{Error:Error.message | Error};