【问题标题】:Node.JS/Express store DB config for different environment in JSONNode.JS/Express 以 JSON 格式存储不同环境的数据库配置
【发布时间】:2018-01-11 22:18:58
【问题描述】:

我正在运行 NodeJS Express 应用程序,

目前有dev env、test env 和prod env。

但是,数据库连接设置在代码中,是否有一种安全且最佳实践的方式来以 JSON 文件格式存储数据库配置和所有其他配置,方法是在模块中声明它们(分别用于要导出的每个 env 或一个模块中的所有内容,可能对每个环境都有一个 default.JSON、Dev.JSON、Prod.JSON...等),然后通过在 app.js 中为正确的环境设置正确的配置来相应地要求它们.

我想在不依赖任何 .env 或 ncof 等任何 3rd 方包的情况下实现这一目标。

【问题讨论】:

    标签: json node.js express


    【解决方案1】:

    大多数主要的 NodeJs 托管服务提供商都使用简单的环境变量。你可以用这个:

    process.env.NODE_ENV
    

    要自己定义,例如在本地“开发”,您可以这样做:

    NODE_ENV=developpment node yourapp.js
    

    有了这个,我建议你使用一个配置工具,比如nconf(有一些很好的竞争对手)。例如,您可以这样做:

    nconf
        .argv() // Takes arguments from CLI
        .file('./env.' + process.env.NODE_ENV + '.json') // takes from specific env file
        .file('package', './package.json'); // takes from package.json
    

    这里的优先级是从最重要到最不重要的: 1) 精氨酸 2)具体环境文件 3) 包.json

    【讨论】:

      【解决方案2】:

      您可以根据环境要求文件。

      const env = 'test';  // This value can be taken from config or .env
      const configs = require(`../path/${env}`);
      console.log('DB Config', configs.DB_PATH);
      

      根据您的环境,您可以加载文件。环境值可以从 .env 或任何其他配置中检索。

      【讨论】:

      • 这样,您可以直接在代码中强制环境。不是很动态。
      • 其实不是,你的env值是可以配置的。并且取决于您可以更改该值。
      • 非常感谢大家,我认为 env 值可以从 Node_ENV 中检索并通过 set.app 在 express 中设置,如果我错了,请纠正我
      • 是的,您可以从 Node_ENV 检索 env 值。如果您将来不需要该值,我认为不需要使用 set.app 存储它。
      猜你喜欢
      • 2020-08-12
      • 2023-03-03
      • 2012-05-29
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多