📜  ElectronJS 中的环境变量

📅  最后修改于: 2022-05-13 01:56:31.904000             🧑  作者: Mango

ElectronJS 中的环境变量

ElectronJS是一个开源框架,用于使用能够在 Windows、macOS 和 Linux 操作系统上运行的 HTML、CSS 和 JavaScript 等 Web 技术构建跨平台原生桌面应用程序。它将 Chromium 引擎和NodeJS组合成一个单一的运行时。

我们已经讨论过ElectronJS 中的命令行参数。命令行参数很重要,因为它们可用于控制应用程序的行为。我们可以在启动时从应用程序外部将命令行参数传递给 Electron,或者我们可以在应用程序中简单地对这些值进行硬编码。 Electron 中的环境变量还可以控制应用程序的配置和行为,而无需更改代码。 Electron 中的一些特定行为由环境变量而不是命令行参数控制,因为它们比命令行标志和应用程序的主要函数代码更早地初始化。在本教程中,我们将了解 Electron 使用的不同环境变量及其各自的分类。

我们假设您熟悉上述链接中涵盖的先决条件。为了使 Electron 正常工作,需要在系统中预先安装nodenpm

如上所述,如果我们在应用程序中硬编码命令行标志,我们需要导入app模块的CommandLine属性,但我们不需要任何额外的代码更改来设置 Electron 中的环境变量。但是,由于 Electron 也支持全局进程对象,我们也可以通过代码设置环境变量。例如:

process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE'

有关process对象的更多详细信息,请关注ElectronJS 中的 Process Object 。 Electron 提供了两种主要的环境变量:

  • 发展变量
  • 生产变量

顾名思义,开发环境变量主要用于应用程序中的开发和调试目的。

  • ELECTRON_ENABLE_LOGGING:此环境变量设置为true ,将 Chromium 的内部日志打印到应用程序的控制台。
  • ELECTRON_LOG_ASAR_READS:当 Electron 从 ASAR 文件读取时,如果此环境变量设置为true ,则将读取的偏移量和文件路径记录到系统tmpdir 。生成的文件可以提供给 ASAR 模块以优化文件排序,从而提高 Electron 应用程序的性能并减少系统资源的负载。 ASAR存档是一种简单的类似 tar 的格式,它将文件连接成单个文件。电子可以从中读取任意文件,而无需解压整个文件。这个环境变量是在 Electron 的更高版本中引入的。
  • ELECTRON_ENABLE_STACK_DUMPING:此环境变量设置为true ,然后在 Electron 应用程序崩溃时将错误堆栈跟踪打印到控制台。如果crashReporter启动,此环境变量将不起作用。 Electron 中的crashReporter模块负责向远程服务器提交崩溃报告。有关crashReporter模块的更多详细信息。
  • ELECTRON_DEFAULT_ERROR_MODE:此环境变量仅在Windows操作系统中受支持。此环境变量设置为true ,在 Electron 应用程序崩溃时显示 Windows 的操作系统崩溃对话框。就像ELECTRON_ENABLE_STACK_DUMPING一样,如果crashReporter启动,此环境变量将不起作用。
  • ELECTRON_OVERRIDE_DIST_PATH:在开发环境中从打包文件运行应用程序时,此环境变量告诉 Electron 使用指定的 Electron 版本,而不是npm install下载的版本。这个环境变量接受一个字符串文件路径,其中 Electron 的特定构建存储在本机系统上。当我们对原始下载的 Electron 包的源代码进行了自己的更改时,这尤其有用。

顾名思义,生产环境变量主要用于在打包的 Electron 应用程序中运行时使用。在将打包的 Electron 应用程序部署到生产环境中的不同服务器时,这些环境变量特别有用。

  • NODE_OPTIONS:由于 Electron 将 NodeJS 和 Chromium 组合成一个运行时,Electron 包含对NodeJS NODE_OPTIONS环境变量子集的支持。 Electron 支持提供的大多数选项,但与 Chromium 使用BoringSSL冲突的选项除外。 BoringSSLOpenSSL的一个分支,旨在满足 Google 的需求。 OpenSSL是用于 HTTP 中的传输层安全 (TLS) 和安全套接字层 (SSL) 协议的强大、商业级且功能齐全的工具包。它也是一个通用的密码库。
    我们可以为NODE_OPTIONS环境变量提供多个选项。不支持的选项是:
    • –使用捆绑的ca
    • --force-fips
    • --启用-fips
    • --openssl-配置
    • --使用-openssl-ca
    • --max-http-header-size
    • --http-解析器
  • GOOGLE_API_KEY: Google 的许多服务都需要为该特定项目为该特定用户生成一个API_KEY ,以便从应用程序内访问这些服务。例如,Electron 中的地理定位支持需要使用 Google Cloud Platform 的地理定位网络服务。要启用此功能,我们需要获取 Google API 密钥。此密钥通常在 Electron 应用程序中进行硬编码,并且由于此 API 密钥包含在每个有效会话的 Electron 版本中,因此它通常超过其使用配额。为了防止这种情况,我们需要将 API Key 添加为环境的一部分。我们可以通过在主进程文件中放置以下代码来做到这一点,然后再打开任何将发出 Google 服务请求的应用程序窗口或功能:
process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE'
  • 我们还可以从应用程序外部设置此环境变量,以便它对每个新的 Google 服务请求会话有效,直到它过期。
  • ELECTRON_RUN_AS_NODE:此环境变量设置为true ,将 Electron 进程作为普通NodeJS进程启动。
  • ELECTRON_NO_ASAR:此环境变量设置为true ,禁用对 Electron 应用程序的 ASAR 支持。此变量仅在设置ELECTRON_RUN_AS_NODE环境变量的派生子进程和衍生子进程中受支持。
  • ELECTRON_NO_ATTACH_CONSOLE:此环境变量仅在 Windows 操作系统中受支持。此环境变量设置为true ,不会将控制台日志附加到当前控制台会话。因此,不会从应用程序中打印任何日志。
  • ELECTRON_FORCE_WINDOW_MENU_BAR:此环境变量仅在 Linux 操作系统中受支持。此环境变量设置为true ,不会将 Linux 平台上的全局菜单栏用于 Electron 应用程序。
  • ELECTRON_TRASH:此环境变量仅在 Linux 操作系统中受支持。此环境变量设置 Linux 平台上的垃圾实现。为此环境变量设置的默认值是gio 。它可以保存以下值:
    • gvfs-垃圾
    • 垃圾-cli
    • kioclient5
    • 客户端

除了生产开发环境变量之外,还有一些变量是由 Electron 自己在运行时在本机系统环境中设置的。

  • ORIGINAL_XDG_CURRENT_DESKTOP:此变量设置为您的应用程序最初启动时使用的XDG_CURRENT_DESKTOP的值。 Electron 有时会修改XDG_CURRENT_DESKTOP的值以影响 Chromium 中的其他逻辑。因此,如果我们想访问原始值,我们应该查找这个环境变量。 XDG_CURRENT_DESKTOP环境变量通知您当前正在使用的桌面环境。此变量因操作系统和平台的不同而不同。除了 Electron 之外,这个变量也被其他进程和应用程序使用,它是一个系统环境变量。

为 Electron 设置环境变量的示例用法

  • Windows 控制台
~$ set ELECTRON_ENABLE_LOGGING=true
  • POSIX 外壳
~$ export ELECTRON_ENABLE_LOGGING=true

输出:

注意:这些环境变量是重置的,每次重启电脑都需要重新设置。如果我们想避免这样做,我们需要将这些环境变量及其各自的值添加到.bashrc文件中。 .bashrc是一个 shell 脚本,当Bash以交互方式启动时,它就会运行它。它初始化一个交互式 shell 会话。我们可以将可以在命令提示符中键入的任何命令放入该文件中,并且它们不会被重置,例如在这种情况下,Electron 的环境变量。