2

Electron Packager を使用してモジュールをラップしました。計算量が多いため、ユーザーがボタンをクリックしたときに実行forkされるサブプロセスに入れました。renderer.jsindex.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
4

1 に答える 1