Дочерний процесс узла завершается сразу после упаковки электронного приложения.

У меня есть этот фрагмент кода в части графического интерфейса моего электронного приложения, которое отлично работает при запуске из терминала. Я упаковал приложение с помощью «электронного упаковщика», после чего у меня начались проблемы.

Первоначально дочерний процесс немедленно завершался и выдавал код 127, который я разрешил с помощью модуля «fix-path», как обсуждалось здесь. https://github.com/electron/electron/issues/7688

Даже после этого процесс немедленно завершается с кодом 1, я не могу решить эту проблему, так как об ошибке не сообщается. Есть ли способ поймать это исключение/ошибку после выхода дочернего процесса?

const fixPath = require('fix-path');
let launch = () => {
fixPath();

const path = "SOME PATH";
var command = 'node ' + 
              path + 
              ' -d ' +      
              ' -e ' +     
              ' -r ' +      
              ' -p ' + 30 +
              ' -w ' +     
              ' -g ' +     
              '-server__ ';


const child = childProcess.exec(command, {
  detached: true,   
  stdio: 'ignore'
});

child.on('error', (err) => {
  console.log("\n\t\tERROR: spawn failed! (" + err + ")");
});

child.on('exit', (code, signal) => {
  console.log(code);
  console.log("\n\t\tGUI: spawned completed it's work!");
});

person kohl    schedule 01.08.2018    source источник


Ответы (1)


Можно использовать обработчик событий данных child.stderr, чтобы поймать ошибку. Я добавил этот фрагмент кода в свой скрипт и смог отладить проблему с выводом на консоль.

child.stderr.on('data', function(data) {
  console.log('stdout: ' + data);
});

Обратитесь к этой статье, которая помогла мне решить эту проблему. https://medium.freecodecamp.org/node-js-child-processes-everything-you-need-to-know-e69498fe970a

person kohl    schedule 01.08.2018