如何在Electron中正确启动带有node-pty的shell环境?



我有一个电子应用程序,它使用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修复了这个问题

相关内容

  • 没有找到相关文章

最新更新