为什么要在node.js中使用环境变量?

为什么要在node.js中使用环境变量?,node.js,environment-variables,dotenv,Node.js,Environment Variables,Dotenv,虽然我可以理解使用.env文件的好处,但与将值直接放入代码中相比,使用它们有哪些优点和缺点(如果有的话)?我见过很多指南解释如何使用它们,但从来没有解释过我们为什么要使用它们。它们是否被视为最佳实践?每个生产项目都应该使用它们吗 # File: .env DB_HOST=localhost DB_USER=rootz DB_PASS=s1mpl3 # File: random_db.js const db = require('db') db.connect({ host: proce

虽然我可以理解使用
.env
文件的好处,但与将值直接放入代码中相比,使用它们有哪些优点和缺点(如果有的话)?我见过很多指南解释如何使用它们,但从来没有解释过我们为什么要使用它们。它们是否被视为最佳实践?每个生产项目都应该使用它们吗

# File: .env
DB_HOST=localhost
DB_USER=rootz
DB_PASS=s1mpl3

# File: random_db.js
const db = require('db')
db.connect({
    host: process.env.DB_HOST,
    username: process.env.DB_USER,
    password: process.env.DB_PASS
})

最好不要在代码中直接包含数据库配置信息。相反,将这些项目保留在环境变量中有以下好处:

  • 它允许您为程序的不同实例使用不同的数据库。例如,拥有同一应用程序的开发和生产实例
  • 它允许您保护数据库凭据。将这些凭证放入源代码中可能是封闭源代码高度保护代码的一种选择,但如果它们在其他地方,则保护它们会容易得多
  • 它允许您在不更改代码的情况下更改数据库配置。也许您已经决定将数据库托管在其他地方。在不重建应用程序的情况下能够做到这一点很好

我确信还有其他原因我现在没有考虑,但仅这些就足以说服大多数人。

请澄清您正在考虑的替代方案。您是否在询问
.env
文件与直接将值放入代码中的利弊?或者仍然使用环境变量,但不在
.env
文件中?谢谢,这是一个很好的建议,Kyle。我还将检查link jonrSo,您可以在不存储凭据的情况下使用版本管理吗?您想编译应用程序的特定版本,还是为部署应用程序的每个端口编写特定的env?