gpt4 book ai didi

node.js - fork 的子进程一直以代码 1 终止

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:12 25 4
gpt4 key购买 nike

我使用 Electron Packager package 了一个模块。因为它的计算量很大,所以我把它放在一个子进程中,即 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
  • Node 8.6
  • Electron 1.7.12
  • Electron package 器 10.1.2

最佳答案

我也有过这样的经历。我想到的原因之一是因为子进程将是 Electron 本身的子进程。就我而言,它不会识别我定义的 Node 模块。我建议使用spawn,其spawn进程为node.exe。但一旦您构建了应用程序,这就不切实际了。

关于node.js - fork 的子进程一直以代码 1 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586869/

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