繁体   English   中英

Dotenv Webpack - 当我在运行时更改系统环境变量时,更改不会影响应用程序

[英]Dotenv Webpack - When I change the system environment variables on runtime, the changes is not affected on the app

我使用 react、webpack、docker 和 AWS 构建了一个 Web 应用程序。

我创建了一个依赖于环境变量的功能。 因此,如果环境变量值为 true,则该功能将显示在前端。

问题是,当我更改服务器上的环境变量时(Webpack 已经完成了应用程序的构建,应用程序已经部署并运行),我的功能没有显示。 我猜是由于应用程序无法读取系统环境变量的值更改。

我怎样才能做到这一点? 有可能做到吗?

======

我使用dotenv webpack来管理我的环境变量。 我已经将systemvars设置为true以检测系统或 .env 文件中的所有环境变量。

======

那我为什么要这样做,因为我不想发出拉取请求来为环境变量推送新值。 我只想保留环境变量名称,如果该功能已准备好部署,则直接从服务器更改值。 如果出现错误,我只需要将环境变量更改为某些内容,然后该功能就会关闭。

您根本无法更改环境变量。 在编译/webpack 加载时加载的 Evn 变量。 所以一旦应用程序启动你就不能改变, process.env

@jonrsharpe 解释的解决方案。 您需要创建某种数据库。 它可以是内存、文件或数据库。 你从中读取数据。 公开 API,以更新数据库。

快递样品:

global.enableFeature = false

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

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

在另一个文件中,从global.enableFeature读取。 这是基于内存的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM