Да и нет. Конечно, переменные Env доступны для кода приложения (process.env
), и сам электрон поддерживает некоторые (, но не все ) NODE_*
переменные.
Важно помнить, что электрон является узломи Chrome скреплены болтами. Это имеет особое значение для HTTP-запросов. Это означает, что электрон на самом деле имеет две параллельные реализации HTTP: браузер (fetch
/ XHR) и узел (require('http')
).
Таким образом, если запросы HTTP проходят черезПерестановка в браузере, переменные NODE_*
не имеют никакого эффекта, и, наоборот, запросы, сделанные через верстку узла, не затрагиваются Флаги Chrome .
Существуют дополнительные причуды:
- По умолчанию Chrome будет использовать системные настройки прокси-сервера HTTP;узел не
- По умолчанию Chrome будет использовать хранилище сертификатов корневого ЦС системы;узел использует встроенный список
- Запросы, сделанные через подключение к браузеру, видны на вкладке "Электронные инструменты разработчика";запросы узлов не
Итак:
- Чтобы везде игнорировать ошибки сертификата TLS, вы должны установить
NODE_TLS_REJECT_UNAUTHORIZED=0
и в самом начале основного.js, звоните app.commandLine.appendSwitch('ignore-certificate-errors')
. Конечно, отключение сертификатов ошибок по всем направлениям опасно по очевидным причинам. - Чтобы браузер доверял самозаверяющему сертификату, вы должны добавить его в хранилище CA своей системы (Windows certmgr, OS X Keychain, LinuxNSS).
К сожалению, NODE_EXTRA_CA_CERTS
- это сломан в электроне, поэтому сложно заставить узел доверять самоподписанному сертификату. Этот комментарий предлагает исправление обезьяны NativeSecureContext.prototype.addRootCerts
, чтобы обойти проблему. Вы также можете попробовать сделать исправление обезьяны https.globalAgent
.
В любом случае, я не верю, что есть способ получить сертификат без доверия, не изменяя код приложения.
Вам, вероятно, придется изменить приложение JS, чтобы это работало. Если вы имеете дело с распределенным приложением, asar extract
, вероятно, будет представлять интерес.