Node-config 自定义环境变量在测试期间不会覆盖 default.json

Met*_*450 6 node.js node-config

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

配置/默认.json:

{
  "jwtPrivateKey": "defaultkey"
}
Run Code Online (Sandbox Code Playgroud)

配置/自定义环境变量.json:

{
 "jwtPrivateKey": "JWTPRIVATEKEY"
}
Run Code Online (Sandbox Code Playgroud)

配置/测试.json:

{}
Run Code Online (Sandbox Code Playgroud)

应用程序.js:

console.log('NODE_ENV': + process.env.NODE_ENV);
console.log('Env: ' + process.env.JWTPRIVATEKEY);
console.log("Config: " + config.get('jwtPrivateKey'));
Run Code Online (Sandbox Code Playgroud)

这按预期工作:我得到 NODE_ENV=undefined (因此节点配置将默认为“development”),接下来的两行都打印环境变量中设置的正确值。但是,如果我尝试使用 Jest 运行一个简单的测试并打印相同的内容:

测试/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'));
});
Run Code Online (Sandbox Code Playgroud)

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

换句话说:虽然它显示环境变量设置为正确的值,但node-config似乎没有通过custom-environment-variables.json将其拉入。

这是一个错误吗?我已经查阅了文档,但无法找到造成这种差异的任何原因。

adr*_*rum 5

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

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