在节点中使用 fork 子进程时如何捕获错误?
How to catch error while using fork child process in node?
我正在使用 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'... fork 方法是否有类似的东西?如果没有关于如何解决这个问题的任何建议?
设置选项 '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();
我正在使用 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'... fork 方法是否有类似的东西?如果没有关于如何解决这个问题的任何建议?
设置选项 '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();