无法从 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'
我有我的 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'