【问题标题】:Env variables configuration for multiple Heroku remotes ie. testing, staging and production多个 Heroku 遥控器的环境变量配置,即。测试、分期和生产
【发布时间】:2020-03-18 07:58:03
【问题描述】:

我在开发过程中使用了 3 个不同的 git 遥控器,即 testingstagingproduction(在 Heroku 上)。我已经实现了一个.env 文件来处理环境变量,但只是想澄清一下我设置它们的方式是正确的。

我已经实现了以下操作来获取NODE_ENV var,并根据我设置的NODE_ENV var 相应地使用它在页面上附加.env var 字符串。

env = process.env.NODE_ENV;
envString = env;
SHEET_ID = process.env['SHEET_ID_' + envString];

在文档中,他们讨论了默认的 env vars,但我不确定 Heroku 是否有自己的 NODE_ENV var 或者它是如何工作的,我一直在我的本地 .env 中自己设置它(然后在推送时我将服务器 NODE_ENV var 更改为测试、登台或生产)

我下面的理解正确吗?

  1. NODE_ENV var 位于我的 .env - 这也是从环境(即 Heroku)提供的默认 env var,还是我自己在 env 文件中设置 var 并将其镜像到服务器上是否正确?

  2. 当推送到远程时,将本地.env 中的环境变量NODE_ENV var 切换为NODE_ENV=testingNODE_ENV=stagingNODE_ENV=production 的正确方法是什么?然后将使用来自例如 Heroku 仪表板的设置变量,而不是本地变量。

  3. 这是通过每个遥控器使用相同代码库而无需更新我的本地文件的最佳方式吗?

  4. 像 Heroku 这样的环境是否默认提供 NODE_ENV 变量?我在控制台登录了process.env,但只找到了我的本地设置变量。

我正在努力设计尽可能可维护和高效的东西,当我最终与他人共享我的代码时,我希望它尽可能易于实现。

【问题讨论】:

    标签: node.js heroku environment-variables


    【解决方案1】:

    遵循12 factor app 原则,所有配置都应在环境变量中进行。

    对于您的应用,这意味着

    • .env 文件只是将配置放入本地环境以使应用程序运行的帮助器
    • heroku 上的每个应用程序(在您的情况下是暂存、测试、生产)都将通过heroku config commands 设置自己的配置。它们最终会出现在您的应用程序测功机的本地环境中,以及您放置在那里的任何插件(例如数据库凭据)。

    【讨论】:

      猜你喜欢
      • 2021-12-26
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2014-09-01
      相关资源
      最近更新 更多