.env与config.json

时间:2018-08-20 19:31:09

标签: javascript node.js

我刚刚开始学习JavaScript / node.js(对后端Webdev的简要介绍),因此我在这个主题上完全是绿色的。

几天前,我在阅读一个教程,从中学到了如何将我的机密数据(例如密码)保存在config.json文件中。

今天,我偶然发现了.env文件,而且我对它了解的越多,似乎有越来越多的人使用它来实际存储密码。

那么我什么时候应该使用.env,什么时候应该使用config.json

5 个答案:

答案 0 :(得分:6)

问题

.env上的config.json何时应用于什么用途?

答案

这是一个相当困难的答案。一方面,在开发过程中,您仅应真正使用这两种工具中的任何一种。这意味着在生产环境或类似产品的环境中,您可以将以下变量直接添加到环境中:

NODE_ENV=development node ./sample.js --mongodb:host "dharma.mongohq.com" --mongodb:port 10065

彼此之间并没有真正的明显赢家,因为它们在不同方面都有帮助。您可以使用config.json嵌套数据,但是另一方面,您也可以使用.env

简化数据结构

还要注意的一点是,您永远不想将这些文件提交到源代码管理(git,svc等)。

另一方面,这些工具使初学者非常容易快速入门,而不必担心如何设置环境变量以及Windows环境与Linux环境之间的差异。

总而言之,我要说的完全取决于开发人员。

答案 1 :(得分:2)

.env文件通常用于存储与特定部署环境有关的信息,而config.json文件则可能用于存储特定于整个应用程序的数据。

这两种方法都行得通,而且配置文件是否存储在存储库中,更多取决于数据是否需要保密。

答案 2 :(得分:2)

Statistically comparing the two NPM packages (以及其他类似的解决方案)可能是自行决定的最佳方法。

在撰写本文时, dotenv 是一个较小的程序包,具有更大的支持(撇开实际贡献者,仅由尚存的问题数量和巨大的受欢迎程度推论得出)。它的寿命也更新了2.5年,如果大张旗鼓对您来说很重要,那么它的星数将是原来的两倍。

enter image description here

答案 3 :(得分:1)

这在很大程度上取决于个人喜好和所使用框架的约定。它们只是用于存储相同类型信息的不同格式。

一些示例配置文件格式:

  • .env
  • *.yml(YAML文件)
  • *.ini(通常仅适用于Windows)
  • *.json

最终,它们都实现了相同的目的:为您的应用程序提供特定于环境的信息(凭证,文件路径,连接字符串等)。选择最适合您选择框架的格式。

答案 4 :(得分:1)

我认为这完全取决于您,重要的是要记住为什么要使用这种方法。这个想法是将您的敏感数据保存在一个文件中,该文件不会被推送到源代码控制或本地环境以外的任何其他地方-这样可以使数据更安全。然后,当您准备部署到某处的远程服务器时,需要手动将这些值插入该环境。

我通常使用.env,因为在许多远程环境(例如heroku)中都支持从.env文件中获取数据的语法。将应用程序部署到heroku时,可以进入应用程序的设置并使用heroku仪表板UI放入环境变量-我不必弄清楚如何获取手动创建的json文件,等等。 (也许还有其他解决方法)。变量到位后,我仅使用process.env.variableName来访问数据。