Dotenv Webpack - Когда я изменяю системные переменные среды во время выполнения, изменения не влияют на приложение - PullRequest
0 голосов
/ 01 апреля 2020

Я создаю веб-приложение, используя реагировать, веб-пакет, docker и AWS.

Я создаю функцию, которая зависит от переменной среды. Таким образом, если значение переменной среды равно true, функция будет отображаться во внешнем интерфейсе.

Проблема в том, что когда я изменил переменную среды на сервере (Webpack уже выполнил сборку приложения, приложение уже развернуто и работает), моя функция не отображается. Я думаю, из-за того, что приложение не может прочитать изменения значений в системной переменной среды.

Как мне этого добиться? Возможно ли это сделать?

=====

Я использую dotenv webpack для управления переменными среды. Я уже установил systemvars на true , чтобы обнаружить все переменные среды из файла системы или .env.

=====

Итак почему я делаю это, потому что я не хочу делать Pull-запрос для pu sh нового значения для переменных среды. Я просто хочу зарезервировать имя переменных среды и изменить значение непосредственно с сервера, если функция готова к развертыванию. И если возникает ошибка, мне просто нужно изменить переменную среды на что-то, и функция не работает.

1 Ответ

1 голос
/ 01 апреля 2020

Вы просто не можете изменить переменную окружения. Переменные Evn загружаются во время загрузки компиляции / веб-пакета. Так что, как только приложение запустится, вы не сможете его изменить, process.env.

Решение, как объясняет @jonrsharpe. Вам нужно создать какую-то базу данных. Это может быть память, файл или база данных. Вы читаете данные из этого. Выставить API, чтобы обновить базу данных.

Express образец:

global.enableFeature = false

app.post("/updateFeatureToggle", (req, res) => {
  const enableFeature = req.body.enableFeature

  global.enableFeature = enableFeature
  res.send({success: "OK"})
})

В другом файле читайте из global.enableFeature. Это в памяти.

...