【问题标题】:how to overwrite config variable value from cmd using config module of nodejs如何使用nodejs的配置模块从cmd覆盖配置变量值
【发布时间】:2019-02-18 04:34:37
【问题描述】:

如何在cmd中改变或覆盖config模块的default.json文件的变量。

这是 default.json 文件

"test":"TEST1"

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

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

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

请帮我解决这个问题,我怎样才能从外面做到这一点

【问题讨论】:

  • 请看下面我的回答。我相信它会满足您的需求。
  • @jremi 好的,我会试试的

标签: node.js config


【解决方案1】:

你可以为 Unix 系统做:

export test="Test1" 

对窗口使用“设置”。

【讨论】:

  • 它在 cmd 'export' 中给我这个错误不是内部或外部命令、可运行程序或批处理文件。
  • 这也不起作用,在此之后我运行 node app.js 命令并在 app.js 中打印测试值,但它没有显示测试的覆盖值,它显示给我default.json 文件中的旧值。
  • 您必须先从环境中选择值。如果它不存在,则从默认的 json 文件中选择它。使用 process.env.test 从环境中获取它。
【解决方案2】:

希望对你有所帮助……

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

【讨论】:

  • 但是如果我要设置多个变量,那么我必须为每个变量编写这行代码
  • 我不知道您的确切使用案例。是的,你是对的......如果你使用我提供的这种方法,你需要添加更多代码来通过命令行参数覆盖和设置配置值。
  • 我的目的是在我的项目中使用它,因为我可以通过其他文件或 cmd 或使用环境变量来更改一些变量值,这些变量值会根据外部源的环境而变化
  • 好的,我正在更新我的答案以更好地满足您的需求。
  • 请查看我的修改选项#2 ...您可以拥有一个辅助配置文件,用于存储您的开发人员环境设置...
猜你喜欢
  • 2019-12-02
  • 2019-08-29
  • 2018-04-26
  • 2016-10-06
  • 2019-08-27
  • 2021-06-19
  • 2017-05-24
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多