【问题标题】:Running an electron process as plain node process? [duplicate]将电子进程作为普通节点进程运行? [复制]
【发布时间】:2019-01-14 17:39:21
【问题描述】:

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

我得到这个是因为我在我的应用程序中调用了一个执行节点命令来运行脚本的子进程。在电子松弛中,建议我通过设置环境变量 ELECTRON_RUN_AS_NODE 将电子进程作为普通节点进程运行。我无法弄清楚我可以在哪里以及如何设置它,关于如何做到这一点的任何想法?另外,这样能解决问题吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您的意思是即使设置了 ELECTRON_RUN_AS_NODE 变量后,我的应用程序仍然需要系统中的节点?电子文档只说设置该变量会使进程作为节点进程而不是电子进程运行。这是否意味着仍然需要在系统上安装节点?难道没有办法让子进程获取与打包应用捆绑的节点吗?
      • @kohl ,不幸的是没有。如果可以的话,它会为我节省大量时间。
      • 我认为我们不再需要节点了。检查链接stackoverflow.com/questions/51771754/…
      • 你知道吗,我现在需要测试一下。让我看看我能不能做到这一点,一旦我完成了,我会提出一个要点。给我几个吧。在南澳已经很晚了。
      猜你喜欢
      • 2019-10-17
      • 1970-01-01
      • 2018-10-22
      • 2016-05-17
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多