有人可以解释Node.js中的环境变量比常规配置文件有什么好处吗?
在我的项目中,我具有带有数据库详细信息,AWS密钥等的config.js文件。此文件被添加到.gitignore中,并且从未在存储库上共享,而是有demo.config.js文件,其中所有必需参数都用假冒填充信用,因此您可以将其复制为config.js,并在全新安装后使用正确的详细信息进行填充。
当我需要项目中的凭证时,在每个文件中“都需要此文件”;在我的开发机上,此配置文件配置有测试服务器详细信息以及生产机器上的实际生产服务器详细信息。
最近我到处都读到每个人都应该使用环境变量来安全地存储凭据,但是在我的项目中我看不出这样做有什么好处。
我并不是说这很糟糕,我的方法更好,我只是想知道在设置过程中使用环境变量会带来什么实际好处(安全性或其他)?
答案 0 :(得分:0)
当您使用docker进行本地开发和kubernetes或用于配置设置的SIT / UAT等任何容器编排时,我看到的一个好处。在本地开发中,我们保留所有必需的env变量,并在基于容器的系统上将其相同
答案 1 :(得分:0)
对我来说,它更像是一个通用标准。使用config.js的方式实际上与使用环境变量相同。但是,您无需将配置存储在环境变量中,而是将其存储在js文件中。
主要区别在于您如何读取该配置。我知道的所有主流语言都可以轻松地从环境变量中读取内容,对此确实有广泛的支持。从配置文件读取会带来额外的复杂性,因为您需要了解该文件的结构,如何解析等。在某些语言(也许是node.js)中,从js文件中读取可能很容易,但是在其他语言中,这可能很困难
这就是为什么使用环境变量只是一个通用的标准,并且与语言无关。您甚至可以在bash脚本等中阅读它。
编辑:添加对“十二要素”应用程序的引用,“配置”部分与上述问题特别相关: https://www.12factor.net/config