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

标签 javascript webpack environment-variables dotenv

我使用 React、Webpack、Docker 和 AWS 构建了一个 Web 应用程序。

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

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

我怎样才能实现这个目标?有可能做到吗?

=====

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

=====

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

最佳答案

你根本无法更改环境变量。 Evn 变量在编译/webpack 加载时加载。因此,一旦应用程序启动,您就无法更改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 读取。这是基于内存的。

关于javascript - Dotenv Webpack - 当我在运行时更改系统环境变量时,更改不会影响应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60974519/

相关文章:

environment-variables - 临时修改当前进程的环境

python - 我怎样才能知道 os.popen 是否在同一个 shell 中运行 linux 命令?

java - 如何在 Tomcat 中为多个错误代码使用相同的错误页面?

javascript - webpack 找不到 bundle.js

laravel - 如何将混合配置更改为 vue.config.js

node.js - 为什么在尝试导入时括号 '{' 是意外标记?

php - 路由注释中的环境变量

javascript - 如果 id 与 JsonB 相同,则更新 Json 对象值

javascript - 通过 jQuery 将图片发送到 PHP - FormData 每次都是空的

javascript - 延迟 wow js 动画直到页面加载