Использование foreverjs в электроне приводит к дублированию электронного приложения в доке - PullRequest
0 голосов
/ 31 декабря 2018

Я использую foreverjs в своей основной электронной программе следующим образом:

const forever = require("forever-monitor");
let child = forever.start(scriptPath, {fork: true});

Я делаю это намеренно, используя child_process.fork, потому что я хочу, чтобы foreverjs следил за вилками и перезапускал их при необходимости.

Хорошо - все вышеперечисленное работает, но, глядя на мою док-станцию ​​на Mac OSX, я вижу, что электронное приложение дублируется для каждой вилки.В производстве это то же самое - значок приложения получает дублированные N раз в Dock для каждого процесса.

Дальнейшее расследование Я нашел причину, но не решение.Причина в том, что, когда вы разветвляете процесс, обычно используя child_process изнутри электрона, он запускает его с помощью приложения Electron Helper.

Однако, когда вы разветвляете процесс с помощью forever.js, он использует само приложение Electron, объясняя, таким образом,дубликаты.

Как заставить навсегда использовать приложение Electron Helper при разветвлении, а не само приложение Electron?

1 Ответ

0 голосов
/ 07 января 2019

ОК, так что я понял это.Проще говоря, вам нужно передать одну переменную окружения в foreverjs следующим образом:

const forever = require("forever-monitor");
let child = forever.start(scriptPath, {fork: true, env: {ELECTRON_RUN_AS_NODE: 1}});

Делая это, и вилка будет правильно использовать свою предварительно упакованную версию узла вместо запуска другой копии электрона "main".

...