Создать процесс в электроне

Я видел несколько сообщений по этой теме, да, она работала очень хорошо, когда я использовал команду electronic в консоли, но она не могла работать, когда я упаковал (электронное построение) электронное приложение, и возникла проблема, когда я запустил приложение : он постоянно начинал создавать новый процесс, поэтому в диспетчере задач было много процессов, которые мы могли видеть, и загрузка ЦП достигла 100%. Я не знаю, как это случилось, не могли бы вы мне помочь? пожалуйста! Вот мой тестовый код:

master.js (основной):

var childProcess = require('child_process');
let createProc = () => {
  let sp = childProcess.spawn(process.execPath, ['./go.js'], {stdio:'ignore'});
  sp.unref();
  sp.on('error', (err) => {
    console.log('failed to start process',err);
  });
  sp.on('exit',(code, signal) => {
    console.log(`child process exited with code ${code}`);
    createProc();
  });
}

createProc();

go.js:

const {app, BrowserWindow} = require('electron');
let basicWindowParams = {
  show: true,
  autoHideMenuBar:true
};
console.log(process.execPath)
console.log(process.execArgv)
console.log(process.pid)
app.on('ready', () => {
  let win = new BrowserWindow(basicWindowParams);
  win.loadURL('http://www.reddit.com/');
  win.on('did-finish-load', () => {
    win.show();
  });
});

ОС : Windows 10

Электрон: 1.8.1

Обновление: я создал репо для демонстрации: https://github.com/xzycn/el_test


person Lordran    schedule 20.11.2017    source источник
comment
Кто-нибудь может мне помочь? :(   -  person Lordran    schedule 22.11.2017


Ответы (1)


В основном электронном файле вы можете использовать что-то вроде этого:

let serverProc = require('child_process').fork(
  require.resolve('./server.js'),
  ['--key', 'value'], // pass to process.argv into child
  {
    // options
  }
)
serverProc.on('exit', (code, sig) => {
  // finishing
})
serverProc.on('error', (error) => {
  // error handling
})
person Kirill Husiatyn    schedule 18.04.2018