Переменные среды в ElectronJS

Опубликовано: 29 Июля, 2021

ElectronJS - это платформа с открытым исходным кодом, используемая для создания кроссплатформенных нативных настольных приложений с использованием веб-технологий, таких как HTML, CSS и JavaScript, которые могут работать в операционных системах Windows, macOS и Linux. Он объединяет движок Chromium и NodeJS в единую среду выполнения.

Мы уже обсуждали аргументы командной строки в ElectronJS. Аргументы командной строки важны, поскольку их можно использовать для управления поведением приложения. Мы можем передать аргументы командной строки в Electron извне приложения при запуске или мы можем просто жестко закодировать эти значения в приложении. Переменные среды в Electron также управляют конфигурацией и поведением приложения без изменения кода. Некоторые конкретные действия в Electron управляются переменными среды, а не аргументами командной строки, поскольку они инициализируются раньше, чем флаги командной строки и код основной функции приложения. В этом руководстве мы рассмотрим различные переменные среды, используемые Electron, и их соответствующие классификации.

Мы предполагаем, что вы знакомы с предварительными условиями, описанными в вышеупомянутой ссылке. Для работы Electron в системе должны быть предварительно установлены node и npm.

Как упоминалось выше, в случае, если мы жестко кодируем флаги командной строки в приложении, нам нужно импортировать свойство CommandLine модуля приложения , но нам не нужны какие-либо дополнительные изменения кода для установки переменных среды в Electron. Однако, поскольку Electron также поддерживает глобальный объект процесса , мы также можем установить переменные среды через код. Например:

 process.env.GOOGLE_API_KEY = 'ВАШ_КЛЮЧ_ЗДЕСЬ'

Дополнительные сведения об объекте процесса см. В разделе «Объект процесса» в ElectronJS. 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 . Модуль crashReporter в Electron отвечает за отправку отчетов о сбоях на удаленный сервер. Подробнее о модуле crashReporter.
  • ELECTRON_DEFAULT_ERROR_MODE: эта переменная среды поддерживается только в операционной системе Windows. Для этой переменной среды задано значение true , отображается диалоговое окно сбоя ОС Windows при сбое приложения Electron. Как и ELECTRON_ENABLE_STACK_DUMPING , эта переменная среды не будет работать, если запущен аварийный репортер .
  • ELECTRON_OVERRIDE_DIST_PATH: при запуске приложения из упакованного файла в среде разработки эта переменная среды указывает Electron на использование указанной сборки Electron вместо той, которая была загружена с помощью npm install . Эта переменная среды принимает путь к файлу String, в котором конкретная сборка Electron хранится в собственной системе. Это особенно полезно, когда мы внесли собственные изменения в исходный код исходного загруженного пакета Electron.

Переменные производственной среды, как следует из названия, предназначены в первую очередь для использования во время выполнения в упакованных приложениях Electron. Эти переменные среды особенно полезны при развертывании упакованного приложения Electron на другом сервере в производственной среде.

  • NODE_OPTIONS: поскольку Electron объединяет NodeJS и Chromium в единую среду выполнения, Electron включает поддержку подмножества переменных среды NodeJS NODE_OPTIONS. Большинство предоставляемых опций поддерживаются в Electron, за исключением тех, которые противоречат использованию Chromium BoringSSL . BoringSSL - это ответвление OpenSSL , разработанное для удовлетворения потребностей Google. OpenSSL - это надежный, коммерческий и полнофункциональный набор инструментов для протоколов Transport Layer Security (TLS) и Secure Sockets Layer (SSL) в HTTP. Это также универсальная криптографическая библиотека.
    Мы можем предоставить несколько параметров для переменной среды NODE_OPTIONS. Неподдерживаемые варианты:
    • –Use-bundled-ca
    • –Force-fips
    • –Enable-fips
    • –Openssl-config
    • –Use-openssl-ca
    • –Max-http-header-size
    • –Http-parser
  • GOOGLE_API_KEY: многие службы Google требуют, чтобы API_KEY был создан для этого конкретного проекта для этого конкретного пользователя, чтобы к службам можно было получить доступ из приложения. Например, для поддержки геолокации в Electron требуется использование веб-службы геолокации Google Cloud Platform. Чтобы включить эту функцию, нам необходимо получить ключ API Google. Этот ключ обычно жестко запрограммирован в приложении Electron, и, поскольку этот ключ API включен в каждую версию Electron для каждого действительного сеанса, он часто превышает квоту использования. Чтобы этого не произошло, нам нужно добавить API-ключ как часть среды. Мы можем сделать это, поместив следующий код в основной файл процесса, прежде чем открывать какие-либо окна приложений или функции, которые будут делать запросы к службам Google:
 process.env.GOOGLE_API_KEY = 'ВАШ_КЛЮЧ_ЗДЕСЬ'
  • Мы также можем установить эту переменную среды извне приложения, чтобы она действовала для каждого нового сеанса запросов службы Google, пока не истечет срок его действия.
  • ELECTRON_RUN_AS_NODE: для этой переменной среды установлено значение true , запускает процесс Electron как обычный процесс NodeJS.
  • ELECTRON_NO_ASAR: для этой переменной среды установлено значение true , отключает поддержку ASAR для приложения Electron. Эта переменная поддерживается только в разветвленных дочерних процессах и порожденных дочерних процессах, которые также устанавливают переменную среды 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-trash
    • мусор
    • kioclient5
    • киоклиент

Помимо переменных среды производства и разработки , есть некоторые переменные, которые устанавливает сам Electron в собственной среде системы во время выполнения.

  • ORIGINAL_XDG_CURRENT_DESKTOP: для этой переменной установлено значение XDG_CURRENT_DESKTOP, с которым изначально было запущено ваше приложение. Electron иногда изменяет значение XDG_CURRENT_DESKTOP, чтобы повлиять на другую логику в Chromium. Поэтому, если мы хотим получить доступ к исходному значению, мы должны вместо этого искать эту переменную среды. Переменные среды XDG_CURRENT_DESKTOP информируют вас о том, какая среда рабочего стола используется в настоящее время. Эта переменная различается в зависимости от ОС и разных платформ. Эта переменная также используется другими процессами и приложениями, помимо Electron, и является системной переменной среды.

Пример использования настройки переменных среды для Electron в

  • Консоль Windows :
 ~ $ установить ELECTRON_ENABLE_LOGGING = true
  • Оболочка POSIX :
 ~ $ экспорт ELECTRON_ENABLE_LOGGING = истина

Выход:

Примечание. Эти переменные среды сбрасываются, и их нужно устанавливать заново каждый раз, когда мы перезагружаем компьютер. Если мы не хотим этого делать, нам нужно добавить эти переменные среды с соответствующими значениями в файлы .bashrc. .bashrc - это сценарий оболочки, который Bash запускает всякий раз, когда он запускается в интерактивном режиме. Он инициализирует интерактивный сеанс оболочки. Мы можем поместить в этот файл любую команду, которую мы могли бы ввести в командной строке, и они не будут сброшены, как в этом случае переменные среды Electron.