我有我的电子应用程序,我用electron-packager
npm模块打包。
我想只从名为 child_process 的Nodejs模块中按名称执行python应用程序。当应用程序没有打包时,它可以工作,但是当我打包它时它不起作用。我注意到打包的应用程序没有加载 PATH 变量,因此只有当我将其更改为脚本的绝对路径时它才有效。但我想让它与平台无关,所以它不适合我。
我有什么方法可以注射"打包应用程序或任何其他解决方案的 PATH 变量?
答案 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一起运行的exec
。 Here's an article深入探讨差异。