我有我的电子应用程序,我用electron-packager
npm 模块打包。我只想从名为child_process的 Nodejs 模块中按名称执行 python 应用程序。当应用程序未打包时它可以工作,但是当我打包它时它不起作用。我注意到打包的应用程序不会加载PATH变量,因此只有当我将其更改为脚本的绝对路径时它才有效。但我想让它独立于平台,所以它不是我的解决方案。
有什么办法可以将PATH变量“注入”到打包的应用程序或任何其他解决方案中?
我有我的电子应用程序,我用electron-packager
npm 模块打包。我只想从名为child_process的 Nodejs 模块中按名称执行 python 应用程序。当应用程序未打包时它可以工作,但是当我打包它时它不起作用。我注意到打包的应用程序不会加载PATH变量,因此只有当我将其更改为脚本的绝对路径时它才有效。但我想让它独立于平台,所以它不是我的解决方案。
有什么办法可以将PATH变量“注入”到打包的应用程序或任何其他解决方案中?
这可能是这个 PATH 问题。
你可以用这个包修复它。
const fixPath = require('fix-path');
fixPath();
console.log(process.env.PATH);
//=> '/usr/local/bin:/usr/bin'
您是否正在使用spawn
剥离您的子进程?如果是这样,那是在没有外壳的情况下启动的,因此没有PATH
. 但是,您可以强制它使用 shell。
const myCmd = spawn('ls', args, { shell: true });
或者,您可以使用exec
which does 与 shell 一起运行。这是一篇深入探讨差异的文章。