【问题标题】:How to configure various node environments如何配置各种节点环境
【发布时间】:2015-12-31 15:20:17
【问题描述】:

我正在尝试为不同的环境配置我的环境变量。到目前为止,我已经定义了环境变量:

app/config.json:

    "development": {
        "PORT": 3000,
        "APP_SECRET_KEY": "asdf",
        "DB_NAME": "sadf",
        "DB_USER": "sadf",
        "DB_USER_PASSWORD": "asdf", 
        "DB_HOST": "asdf",
        "DB_PORT": 5432,
        "DB_SEARCHPATH": "asdf"

    },

    "test": {
        "PORT": 3000,
        "APP_SECRET_KEY": "fdas",
        "DB_NAME": "fdas",
        "DB_USER": "fdsa",
        "DB_USER_PASSWORD": "fdsa", 
        "DB_HOST": "fdsa",
        "DB_PORT": 5432,
        "DB_SEARCHPATH": "fdsa"
    }
}

在此之后,我不确定在哪里/如何告诉节点使用开发或测试变量,具体取决于我想要运行的环境。有人可以帮助或指向我的教程吗?我还没有找到关于这个的整体教程..

提前致谢。

【问题讨论】:

标签: node.js variables configuration environment


【解决方案1】:

所以首先我建议您将配置文件更改为 js 并像任何其他模块一样导入它们,这将允许您将逻辑添加到您的配置中。 在此示例中,我根据名为 NODE_ENV 的环境变量选择我的 env。

var config = function  () {
switch(process.env.NODE_ENV) {
case 'development': 
    return {...}
case 'test': 
    return {...}
....}
module.exports = config();

这样你就不必每次都重复选择环境的逻辑了。

【讨论】:

  • 您可以对 json 文件使用 require,就像对 js 文件一样。你得到了整个对象。
  • 我知道,但你不能在 json 文件中添加逻辑。在您的解决方案中,您每次都需要添加另一个 js 模块或附加逻辑
  • 但是一旦设置完成,你可以在 json 中添加额外的配置或环境,而不需要在 switch 语句中添加新的 case。
  • 每次您需要配置时,您都必须检查 process.env.NODE_ENV 而不是为了拥有正确的配置,我发现它比添加更多不同的环境更重要(我需要的配置文件比添加环境)我也不喜欢将我的配置添加到 process.env 但这只是个人喜好
【解决方案2】:

我通常在 app-boot 上做类似的事情来将动态配置复制到环境配置:

var config = require('./config');
var env = process.env.NODE_ENV || 'development';

var envConfig = config[env];

// copy config to proceed.env
for(var key in config) {
   process.env[key] = config[key];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2018-10-05
    相关资源
    最近更新 更多