当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将其引入。
这是一个错误吗?我已经仔细阅读过文档,但找不到任何导致这种差异的原因。
答案 0 :(得分:0)
您偶然在配置文件夹中有一个local.json
文件吗?如果是这样,这是一种覆盖所有内容的特殊文件类型,因此您的值可能与该配置的值完全匹配。 NODE_ENV
var似乎不影响local.json
是否最后加载。
我刚遇到这个问题,临时重命名/删除local.json
解决了我的问题。
答案 1 :(得分:0)