优雅地处理NodeJS中subprocess中的错误

我使用节点进行服务器端处理 – 通过大数据文件,并插入数据库。 这将在cron工作上每晚进行。 在程序中有几项任务需要完成。 我已经设置了child_process以便正确执行这些不同的任务。 不过,我想整个事情都有一个error handling部分。 如果出现任何问题,我想寄一封电子邮件给我,让我知道。 当我看到这个,我认为它会发现在subprocess中的错误,并允许我发送一个电子邮件的问题。

 process.on('error', function (err) { console.log("Error running Scripts") sendErr(err); }); 

但是我很快发现,这只会在产生过程中捕获错误,而不是在实际执行中。 但后来我发现了uncaughtException事件,并用uncaughtExceptionreplace了上面代码中的error 。 不幸的是,它没有按照我所希望的那样工作,代码没有运行,而且电子邮件也没有发送。 有谁知道如何做到这一点,或看看我做错了什么。 这是我目前的代码

 var process = childProcess.fork(scriptName, {cwd:scriptWorkingDirectory}); process.on('uncaughtException', function (err) { console.log("Error running Scripts") sendErr(err); }); 

您必须在subprocess中执行process.on('uncaughtException', ...) ,而不是在父进程中。

家长不能听到subprocess中的错误。 你可以听父母的'end'事件的孩子,看看孩子是否结束,但你不能告诉它是否结束了,只有基于退出代码。

所以在小孩听uncaughtException和比你可以通过subprocess.send进程发送一个消息从subprocess到父进程。发送父进程可以发送邮件,只要你喜欢。