测试期间,节点配置的自定义环境变量不会覆盖default.json

时间:2019-05-10 21:02:13

标签: node.js node-config

当NODE_ENV设置为“ test”时,Node-config的custom-environment-variables.json似乎不会覆盖default.json中的值。这是一个非常简单的配置:

config / default.json:

{
  "jwtPrivateKey": "defaultkey"
}

config / custom-environment-variables.json:

{
 "jwtPrivateKey": "JWTPRIVATEKEY"
}

config / test.json:

{}

app.js:

console.log('NODE_ENV': + process.env.NODE_ENV);
console.log('Env: ' + process.env.JWTPRIVATEKEY);
console.log("Config: " + config.get('jwtPrivateKey'));

这按预期工作:我得到NODE_ENV = undefined(所以node-config将默认为'development'),并且接下来的两行都打印环境变量中设置的正确值。但是,如果我尝试使用Jest运行简单的测试并打印相同的内容:

tests / some.test.js:

test('Some Test', () => {
    console.log('NODE_ENV:' + process.env.NODE_ENV);
    console.log('Env: ' + process.env.JWTPRIVATEKEY);
    console.log("Config: " + config.get('jwtPrivateKey'));
});

我得到NODE_ENV = test,Env =在环境变量中设置的正确值...但是Config = defaultKey。

换句话说:尽管表明环境变量设置为正确的值,但是node-config似乎并没有通过custom-environment-variables.json将其引入。

这是一个错误吗?我已经仔细阅读过文档,但找不到任何导致这种差异的原因。

2 个答案:

答案 0 :(得分:0)

您偶然在配置文件夹中有一个local.json文件吗?如果是这样,这是一种覆盖所有内容的特殊文件类型,因此您的值可能与该配置的值完全匹配。 NODE_ENV var似乎不影响local.json是否最后加载。

我刚遇到这个问题,临时重命名/删除local.json解决了我的问题。

答案 1 :(得分:0)

我也对此感到困惑并搜索了所有不同的平台,最终从 node-config 报告的问题中得到了这个链接。

enter image description here

dont use local