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