语境:
随着我的 Node.js 项目越来越大,对配置的需求也在增加。这个项目是我从“旧配置文件”(例如,a config.js
or config.json
)切换到 dotenv ( .env
) 文件来配置产品的第一个项目。
但是,使用的环境变量数量之多引发了一个问题。这些环境变量都与操作系统和网络配置有关,因此使用 dotenv 技术配置应用程序似乎是合理的。
问题:
假设已经设置了一个环境变量;那会弄乱配置。这方面的一个实际示例是,当您将项目上传到一些较大的(云)主机时:PORT
机器的环境变量已设置,因此可能会覆盖默认值(参见下面的示例),或者您可能会使用的值预计。对于系统管理员来说,这些错误很难调试。
const PORT = process.env.PORT || 3000
如何处理这些陷阱?
现在的情况:
我目前正在[name of product]_[name of variable]
用作我的环境变量的模板。感觉就像是 hack(还记得 JS 中的私有成员吗?),而且很可能有更好的解决方案可用。
我想到的第二个选项是.env
通过设置产品中使用的所有变量在文件中非常明确。然而,这里的可靠性似乎是一个弱点:如果有人要删除一个设置,整个“防御机制”就会消失,产品再次容易受到这些错误的攻击。