如何使用nodejs的配置模块从cmd覆盖配置变量值

时间:2019-02-18 04:34:37

标签: node.js config

如何从cmd更改或覆盖配置模块的default.json文件的变量。

  

这是default.json文件

"test":"TEST1"

我想从cmd更改测试变量值,但是当我在cmd中运行此命令时,我将显示在default.json中设置的test值,而不是我在cmd命令中提供的值。

  

这是我用来更改测试值的命令

$env:TEST="TEST_VALUE" node app.js

请帮助我解决此问题,如何从外部进行

2 个答案:

答案 0 :(得分:0)

您可以在Unix系统上做

export test="Test1" 

对Windows使用“设置”。

答案 1 :(得分:0)

希望这对您有帮助...

default.json

{
    "test":"TEST1"
}

app.js

DEFAULT_CONFIG = require('./default.json');
process.argv.forEach((arg,index)=>{
    if(arg.match('--test')){
        DEFAULT_CONFIG.test = process.argv[index+1] ? 
            process.argv[index+1] : 
            DEFAULT_CONFIG.test;
    }
})
console.log(`test is now set to ${DEFAULT_CONFIG.test}`);

命令行

foo@bar:~$ node app.js
test is now set to TEST1

foo@bar:~$ node app.js  --test TEST_VALUE
test is now set to TEST_VALUE

================================================ =========

选项#2 基于OP注释

default.json

{
    "test":"TEST1"
}

dev_config.json

{
    "test":"TEST_VALUE"
}

app.js

DEFAULT_CONFIG = process.env.NODE_ENV === 'dev' ?
    require('./dev_config.json') :
    require('./default.json');

命令行

使用dev_config.json配置设置

foo@bar:~$ NODE_ENV=dev node app.js

要使用常规的default.json配置设置

foo@bar:~$ node app.js