【问题标题】:Run a Cli command from an Electron packaged app从 Electron 打包的应用程序运行 Cli 命令
【发布时间】:2017-02-19 18:11:26
【问题描述】:

我正在编写一个带有 ElectronNativefier 包的 Mac OSX GUI,当我在安装了 Nodejs 的机器上(全局)运行打包的应用程序时,一切正常。
在没有安装 Nodejs 的机器上找不到该命令。

我在 Electron 中使用 Nativefier Cli 以及完整的 cli 路径:

var cliCmd = '"'+app.getAppPath()+'/node_modules/nativefier/lib/cli.js"';

const child_process = require('child_process');
child_process.exec(cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"', function (error, stdout, stderr) {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

我收到此错误:"env: node: No such file or directory"
检查了app.getAppPath() 目录,它是正确的。

另外,我尝试传递envcwd 参数,但没有任何成功。

child_process.exec(cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"',
{
  env: {"ATOM_SHELL_INTERNAL_RUN_AS_NODE":"1"},
  cwd: app.getAppPath()
},
function (error, stdout, stderr) {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

我做错了什么?我也试过child_process.spawn(),但又没有任何运气。
在没有安装 nodejs 的机器上,我需要做什么才能从我的应用程序调用打包的 node_module/cli?

【问题讨论】:

    标签: node.js macos electron child-process


    【解决方案1】:

    我在process 对象中找到了execPath 现在我可以在没有全局安装 nodejs 的机器上执行 nodejs 命令。它使用的是 Electron 的内置版本。

    child_process.exec(process.execPath+' '+cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"',
    {
      env: {"ATOM_SHELL_INTERNAL_RUN_AS_NODE":"1"},
      cwd: app.getAppPath()
    },
    function (error, stdout, stderr) {
      if (error) {
        console.error(`exec error: ${error}`);
        return;
      }
      console.log(`stdout: ${stdout}`);
      console.log(`stderr: ${stderr}`);
    });
    

    【讨论】:

    • 当我尝试这个时,我得到了Error: Cannot find module '/Users/abeall/tools/electron/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Resources/electron.asar/browser/init.js'
    猜你喜欢
    • 2018-07-03
    • 2021-09-20
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多