我有一个使用电子打包程序打包的电子应用程序,我想在任何未安装节点的Mac中运行该应用程序。有人建议我用electronic-packager将节点捆绑到我的应用程序中,但是当我尝试在Mac上启动它时,出现了“找不到节点命令错误”。
之所以会这样,是因为我在应用程序中调用了一个子进程,该子进程执行节点命令来运行脚本。在电子松弛的情况下,建议通过设置环境变量ELECTRON_RUN_AS_NODE将电子过程作为纯节点过程运行。我不知道该在何处以及如何设置此设置,有关如何执行此设置的任何想法?另外,这可以解决问题吗?
答案 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。它的作用是将脚本并将节点捆绑到可执行文件中,然后在生成进程时可以参考该脚本。