我有一个电子应用程序,它使用node-pty创建一个伪终端实例。创建该实例的方法如下:
const pty = require('node-pty');
const os = require('os');
const shell = process.env[os.platform() === 'win32' ? 'COMSPEC' : 'SHELL'];
const ptyProcess = pty.spawn(shell, [], {
name: 'xterm-color',
cols: 100,
rows: 40,
cwd: process.env.HOME,
env: process.env
});
当我使用(electron .
)从vscode终端启动应用程序时,一切都按预期工作。也就是说,shell可以找到所有的程序,就像在cmd.exe或Terminal.app中一样。
然而,如果我构建应用程序,并通过双击打开它,我注意到我的路径不包含某些目录,如/usr/local/bin/
,这可能导致某些程序(如brew
)失败" not found"错误。
值得注意的是,如果我使用open -a MyElectronApp
从mac终端启动电子应用程序,一切都像预期的那样工作。
我怀疑我的应用程序需要以某种方式初始化路径。然而,由于这是一个跨平台的应用程序,我想避免做任何像"if os。平台== 'darwin' load/etc/path "
任何帮助都将非常感激。如果你需要更多的信息,请告诉我。我想我的问题可能是由于对shell环境的误解/无知!
面临同样的问题。使用https://github.com/sindresorhus/fix-path
process.env。在生产模式下,电子过程不能使用PATH。上面的fix-path
修复了这个问题