无法从Electron打包应用程序执行shell命令

时间:2018-01-24 10:59:58

标签: node.js electron electron-packager

我有我的电子应用程序,我用electron-packager npm模块打包。 我想只从名为 child_process 的Nodejs模块中按名称执行python应用程序。当应用程序没有打包时,它可以工作,但是当我打包它时它不起作用。我注意到打包的应用程序没有加载 PATH 变量,因此只有当我将其更改为脚本的绝对路径时它才有效。但我想让它与平台无关,所以它不适合我。

我有什么方法可以注射"打包应用程序或任何其他解决方案的 PATH 变量?

2 个答案:

答案 0 :(得分:2)

这可能是this PATH issue

您可以使用this package对其进行修复。

const fixPath = require('fix-path');

fixPath();

console.log(process.env.PATH);
//=> '/usr/local/bin:/usr/bin'

答案 1 :(得分:0)

您是否正在使用spawn来剥离您的子流程?如果是这样,那么在没有shell的情况下启动,因此没有PATH。但是,您可以强制它使用shell。

const myCmd = spawn('ls', args, { shell: true });

或者,您可以使用与shell一起运行的execHere's an article深入探讨差异。