在electron中使用foreverjs会导致electron应用程序在dock中重复

在electron中使用foreverjs会导致electron应用程序在dock中重复,electron,forever-monitor,Electron,Forever Monitor,我在我的electron应用程序main中使用foreverjs,如下所示: const forever = require("forever-monitor"); let child = forever.start(scriptPath, {fork: true}); 我故意在使用child_process.fork时这样做,因为我希望foreverjs监视fork,并在需要时重新启动它们 好吧,上面的方法是可行的,但看看我在MacOSX上的dock,我发现electron应用程序在每个fo

我在我的electron应用程序main中使用foreverjs,如下所示:

const forever = require("forever-monitor");
let child = forever.start(scriptPath, {fork: true});
我故意在使用child_process.fork时这样做,因为我希望foreverjs监视fork,并在需要时重新启动它们

好吧,上面的方法是可行的,但看看我在MacOSX上的dock,我发现electron应用程序在每个fork上都是重复的。在生产中也是一样的——应用程序图标get在Dock中为每个进程复制N次

进一步调查后,我找到了原因,但没有找到解决办法。原因是,当您从electron内正常使用child_进程来分叉进程时,它会使用electron Helper应用程序启动该进程

但是,当您使用forever.js派生一个进程时,它会使用Electron应用程序本身,从而解释重复的情况


如何在分叉时强制永远使用Electron Helper应用程序,而不是Electron应用程序本身?

好的,所以我找到了答案。非常简单,您需要向foreverjs传递一个环境变量,如下所示:

const forever = require("forever-monitor");
let child = forever.start(scriptPath, {fork: true, env: {ELECTRON_RUN_AS_NODE: 1}});
这样做,fork将正确使用其预先打包的node版本,而不是启动另一个electron“main”副本