如何解决环境变量冲突和污染?

时间:2018-05-24 19:52:45

标签: node.js environment-variables 12factor

上下文

随着我的Node.js项目变得越来越大,对配置的需求也在增加。这个项目是我从第一个遗留配置文件切换到的第一个项目。 (例如,config.jsconfig.json)到dotenv(.env)文件以配置产品。

但是,使用的大量环境变量引发了一个问题。这些环境变量都与操作系统和网络配置相关,因此使用dotenv技术配置应用程序似乎是合理的。

问题:

假设已经设置了一个环境变量;这会搞砸配置。一个实际的例子就是当你将项目上传到一些较大的(云)主机时:设置了机器的PORT环境变量,因此可以覆盖默认值(参见下面的例子),或者您可能期望的价值。对于系统管理员来说,这些错误很难调试。

const PORT = process.env.PORT || 3000

如何处理这些陷阱?

现状:

我目前正在使用[name of product]_[name of variable]作为环境变量的模板。感觉就像一个黑客(记住JS中的私人成员吗?)并且很可能有更好的解决方案。

我想到的第二个选项是通过设置产品中使用的所有变量,在.env文件中非常明确。然而,可靠性似乎是一个弱点:如果有人要删除一个设置,整个"防御机制"已经消失,产品再次容易受到这些错误的影响。

0 个答案:

没有答案