3

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

配置/default.json:

{
  "jwtPrivateKey": "defaultkey"
}

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

{
 "jwtPrivateKey": "JWTPRIVATEKEY"
}

配置/test.json:

{}

应用程序.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 将默认为“开发”),并且接下来的两行都打印了在环境变量中设置的正确值。但是,如果我尝试使用 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'));
});

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

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

这是一个错误吗?我已经搜索了文档,但找不到导致这种差异的任何原因。

4

2 回答 2

2

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

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

于 2019-05-29T04:15:39.857 回答
0

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

在此处输入图像描述

不要使用本地

于 2021-01-24T19:12:20.113 回答