模块.导出与环境变量



将敏感凭据存储在凭据.js文件中与存储在.env文件中有什么区别?

模块。可以写入的导出:

const KEY = require("./credentials.js");

而对于。env文件,你可以这样写:

const KEY = process.env.KEY;

在这两种情况下,您都实现了使某个变量"全局"的相同目标。并在全球范围内访问它。为什么人们使用。env和dotenv,而不是使用Node的内置模块?出口系统?

环境变量意味着在机器(系统)上定义。环境变量可用于运行在同一系统上的多个应用程序。

导出的变量仅限于您正在运行的应用程序。

在你的例子中:如果您想在3台服务器(Dev, QA, Prod)上部署应用程序,但使用不同的凭据,那么每次部署时更改凭据是没有意义的。即使你为每个服务器定义凭据,它也必须是静态的,如果你想改变它,你必须在文件中做改变,并再次部署应用程序来反映这些改变。对于环境变量,你只需要在目标系统上更改它并重新启动服务器,因此不需要再次部署应用程序。

当不止一个环境变量发生变化时,管理起来会很混乱。此外,在与其他服务集成时,环境变量也很有用。

对于环境变量的安全性,您可以阅读

存储凭据时:

  • 当凭证存储在配置文件
  • 中时,有将凭证暴露给版本控制系统的风险
  • 无论凭证存储在哪里,如果系统被破坏
  • 您可以使用运行时配置文件。在这里找到

最新更新