1

私は以下のコードを持っています

// 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

process.on('message', function(m) {
console.log("Helloooooooooo from pChild.js")
// Pass results back to parent process
process.send("Fun1 complete");
});

pChild.js からスローされた親のエラーを処理してプロセスを強制終了するにはどうすればよいですか?

4

1 に答える 1

5

子プロセスで未処理のエラーが発生すると、子プロセスが終了し、オブジェクトで'exit'イベントchildが発行されます。

child.on('exit', function (code, signal) {
    console.log('Child exited:', code, signal);
});

エラーが子プロセス内で処理される場合は、別のメッセージとして送信できます。

// 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');
 });
于 2013-09-05T11:04:16.970 に答える