【发布时间】:2022-07-29 20:02:32
【问题描述】:
我有一个使用 node-pty 创建伪终端实例的 Electron 应用程序。该实例的创建方式如下:
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 终端启动应用程序时,一切正常。 IE。 shell 可以像在 cmd.exe 或 Terminal.app 中一样找到所有程序。
但是,如果我构建应用程序并通过双击打开它,我注意到我的路径不包含某些目录,例如 /usr/local/bin/,这可能会导致某些程序(例如 brew)失败“未找到”错误。
值得注意的是,如果我使用open -a MyElectronApp 从 Mac 上的终端启动电子应用程序,一切都会按预期工作。
我怀疑我的应用需要以不同方式初始化路径。但是,由于这是一个跨平台的应用程序,我想避免执行类似“if os.platform == 'darwin' load /etc/paths”之类的操作。
任何帮助将不胜感激。如果您需要更多信息,请告诉我。我认为我的问题可能是由于对 shell 环境的误解/无知!
【问题讨论】:
标签: javascript node.js terminal electron node-pty