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

Cannot execute shell command from Electron packaged app

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

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

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

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

或者,您可以使用 exec,它 运行 和 shell。 Here's an article 深入探讨差异。

这大概是this PATH issue.

你可以用 this package 修复它。

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

fixPath();

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