【问题标题】:How do I correctly launch a shell environment with node-pty in Electron?如何在 Electron 中使用 node-pty 正确启动 shell 环境?
【发布时间】: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


    【解决方案1】:

    面临同样的问题。已使用https://github.com/sindresorhus/fix-path

    process.env.PATH 不适用于生产模式下的电子过程。以上fix-path修复了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 2019-12-16
      • 2019-08-08
      • 2017-12-18
      • 2018-10-09
      相关资源
      最近更新 更多