我使用 Electron Packager 包装了一个模块。因为它的计算量很大,所以我把它放在一个子进程中,fork
当renderer.js
用户单击index.html
.
伪代码renderer.js
来自:
let cp = require('child_process');
let subprocess;
function log(msg) {
// A function to log messages sent from subprocess
}
document.querySelector('#create').addEventListener('click', ev => {
subprocess = cp.fork('./subprocess.js');
log('A subprocess has been created with pid: ' + subprocess.pid + ' with exexPath = ' + process.execPath);
subprocess.on('exit', (code, signal) => log(`child process terminated: signal = ${signal} ; code = ${code}`));
subprocess.on('error', log);
subprocess.on('message', log);
});
真正的问题是:当我从工作目录中的控制台调用时,这个子进程运行顺利electron ./
,但 Electron Packager 生成的构建不会。
子进程不会出现在任务管理器中,或者更确切地说,它一出现就被终止。日志说child process terminated: signal = null ; code = 1
。
虽然我一开始就subprocess.js
用这个来抓uncaughtException
process.on('uncaughtException', (err) => {
process.send(`Caught exception: ${err}`);
});
日志中没有任何记录。我应该怎么做才能克服这种情况?
系统规格:
- 窗口 10
- 节点 8.6
- 电子 1.7.12
- 电子包装器 10.1.2