如何配置各种节点环境

时间:2015-12-31 15:20:17

标签: node.js variables configuration environment

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

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"
    }
}

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我通常在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];
}