【问题标题】:React not fetching data from the updated env file反应不从更新的环境文件中获取数据
【发布时间】:2020-02-07 13:49:12
【问题描述】:

我的.env 文件中有一些环境变量会在数据库中的某些值更新时更新。

示例:

REACT_APP_FIREBASE_ID=1234567890

当我在我的 react 应用程序上将此记录到控制台时:

console.log(process.env.REACT_APP_FIREBASE_ID) //this gives "1234567890"

但是当 .env 文件被其他东西更新时:

示例:

REACT_APP_FIREBASE_ID=9876543210

日志仍然给出旧值:

console.log(process.env.REACT_APP_FIREBASE_ID) //this still gives "1234567890"

我在开发模式的 CRA 上使用“npm start”

如果我终止服务器并重新启动它,我可以看到控制台的正确输出。 但是,这在“npm run build”之后不起作用

在生产模式下更改 .env 文件后如何清除环境缓存?

【问题讨论】:

  • 您是在更改 env 变量而不重新启动 react 应用程序,还是在更改变量并关闭应用程序并重新启动?
  • 更改 env 文件,然后使用“npm start”在开发模式下重新启动服务器。在开发模式下这样做很好。我们可以重新启动服务器。但是在生产模式下怎么做呢?
  • Env 变量不会在服务器不重启的情况下更改。最好将数据存储在其他地方。
  • @HoratiuJeflea 在 JSON 文件中可能吗?并在数据库更新时更新该 JSON?
  • 查看 Google Cloud 的解决方案,我只知道 Azure 和 AWS。

标签: reactjs environment-variables create-react-app


【解决方案1】:

我就是这样解决的。

我的第一种方法是从 .env 文件中获取值,但除非重新启动服务器,否则这种方法不起作用。 [不好]

我的第二个想法是创建一个 JSON 文件并保存其中的数据,并在数据库更新时更新 JSON 文件。 可悲的是,这是一个非常糟糕的方法,因为 CRA(或者可能是任何 react 项目)无法调用 src 文件夹之外的文件,并且在构建之后,无法更改构建的 js 文件。 [非常糟糕]

最后,我设法使用这种方法解决了这个问题[DECENT,我猜]

  • 以键值格式保存表中的数据(您也可以只保存为 JSON 格式)
  • 加载应用程序(加载主组件)时,调用获取该键值(或 JSON)的 API 并将数据存储在浏览器的 LocalStorage 中。
  • 使用localStorage.getItem("theKeyName") 获取应用程序上的值

提示: 您可以在调用 API 之前检查密钥是否已经存在于 LocalStorage 中。

if(localStorage.getItem("theKeyName") !== null) {
    //your API fetch request or redux dispatch
}

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 2021-09-25
    • 2017-05-11
    • 2021-03-29
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多