如何将电子过程作为普通节点过程运行?

时间:2018-08-07 15:06:39

标签: javascript node.js electron child-process electron-packager

我有一个使用电子打包程序打包的电子应用程序,我想在任何未安装节点的Mac中运行该应用程序。有人建议我用electronic-packager将节点捆绑到我的应用程序中,但是当我尝试在Mac上启动它时,出现了“找不到节点命令错误”。

之所以会这样,是因为我在应用程序中调用了一个子进程,该子进程执行节点命令来运行脚本。在电子松弛的情况下,建议通过设置环境变量ELECTRON_RUN_AS_NODE将电子过程作为纯节点过程运行。我不知道该在何处以及如何设置此设置,有关如何执行此设置的任何想法?另外,这可以解决问题吗?

2 个答案:

答案 0 :(得分:3)

一个人可以使用“ fork”方法来运行节点进程,甚至可以在未安装节点的计算机上运行。在这种情况下,“叉子”方法使用父流程的可执行路径电子应用程序。下面给出了fork方法的示例代码:

const child = childProcess.fork(path, args, {
        silent: true,
        detached: true,
        // stdio: 'ignore',
        env: {
            ELECTRON_RUN_AS_NODE:1
        }
    });

还要设置“ ELECTRON_RUN_AS_NODE”环境变量。这对我有用,我能够在未安装节点的Mac上运行该应用程序。

答案 1 :(得分:2)

好的,所以你的问题是这样的:Electron打包nodeJS使其仅在该应用程序的范围内工作。生成其他进程时,您在告诉操作系统它必须使用操作系统上安装的“节点”,而不是与电子捆绑在一起的节点。因此,如果未在该系统上安装节点,则无法调用节点运行脚本。

看看pkg module。它的作用是将脚本并将节点捆绑到可执行文件中,然后在生成进程时可以参考该脚本。