2

我有我的电子应用程序,我用electron-packagernpm 模块打包。我只想从名为child_process的 Nodejs 模块中按名称执行 python 应用程序。当应用程序未打包时它可以工作,但是当我打包它时它不起作用。我注意到打包的应用程序不会加载PATH变量,因此只有当我将其更改为脚本的绝对路径时它才有效。但我想让它独立于平台,所以它不是我的解决方案。

有什么办法可以将PATH变量“注入”到打包的应用程序或任何其他解决方案中?

4

2 回答 2

3

这可能是这个 PATH 问题

你可以用这个包修复它。

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

fixPath();

console.log(process.env.PATH);
//=> '/usr/local/bin:/usr/bin'
于 2019-08-29T08:05:14.093 回答
0

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

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

或者,您可以使用execwhich does 与 shell 一起运行。这是一篇深入探讨差异的文章。

于 2018-01-24T14:15:03.977 回答