Я обернул модуль с помощью Electron Packager. Поскольку он требует больших вычислений, я поместил его в подпроцесс, который будет fork
ed из 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