gpt4 book ai didi

node.js - 在 NodeJS 中优雅地处理子进程中的错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:50:01 25 4
gpt4 key购买 nike

我正在使用 Node 进行服务器端处理——遍历大数据文件,并插入到数据库中。这将在 cron 作业上每晚运行。在程序中有几个任务需要完成。我已经设置了 child_process 以便它正确地完成这些不同的任务。但是,我希望有一个错误处理部分来处理整个事情。如果任何步骤出错,我希望收到一封电子邮件让我知道。当我看到这个时,我认为它会捕获子进程中的错误并允许我发送一封包含问题的电子邮件。

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

但是我很快发现这只会捕获生成过程中的错误,而不是实际执行中的错误。但是后来发现了uncaughtException事件,将上面代码中的error替换成了uncaughtException。不幸的是,它没有像我希望的那样工作,代码没有运行,也没有发送电子邮件。有谁知道该怎么做,或者看看我做错了什么。这是我当前的代码

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

最佳答案

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

父进程无法监听子进程中的错误。您可以在父级中收听子级的 'end' 事件以查看子级是否结束,但您无法判断它是否正常结束,只能根据退出代码。

所以在子进程中听取 uncaughtException 然后你可以通过 subprocess.send 从子进程向父进程发送消息父进程可以随心所欲地发送邮件。

关于node.js - 在 NodeJS 中优雅地处理子进程中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com