运行 电子进程作为普通节点进程?

Running an electron process as plain node process?

我有一个使用 electron-packager 打包的 electron 应用程序,我想 运行 这个应用程序在任何 mac 没有安装节点的地方。我被建议 electron-packager 将节点捆绑到我的应用程序中,但是当我尝试在 mac 上启动它时,我得到了 'node command not found error'.

我得到这个是因为我在我的应用程序中调用了一个子进程,该子进程对 运行 脚本执行节点命令。在 electron slack 中,有人建议我通过设置环境变量 ELECTRON_RUN_AS_NODE 将我的 electron 进程 运行 作为普通节点进程。我不知道在哪里以及如何设置它,关于如何做到这一点的任何想法?另外,这能解决问题吗?

好的,所以你的问题是:Electron 将 nodeJS 打包为仅在该应用程序的范围内工作。当产生额外的进程时,你告诉 OS 它必须使用安装在 OS 上的 "node",而不是与电子捆绑在一起的节点。因此,如果该系统上未安装节点,则无法将节点调用到 运行 脚本。

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

可以使用 'fork' 方法来 运行 节点进程,这甚至可以在没有安装节点的 machine 上运行。 '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 上没有安装节点的应用程序。