4

我正在使用nconf来处理我的应用程序中的配置。我设置它的方式如下:

nconf.env({
    separator: '__',
    whitelist: ['foo', 'bar']
})
.file('config.json')

如果它们是通过环境变量获得的,我似乎无法修改它们。例如,

console.log(nconf.get()); // {"foo":123,"bar":356}
nconf.set('foo', 789);
console.log(nconf.get()); // {"foo":123,"bar":356}

我检查了 的stores属性,nconf似乎表明env变量是只读的?

console.log(nconf.stores);
/**
 * { env:
 *   { type: 'env',
 *     store: { foo: [Object] },
 *     mtimes: { 'foo': 1372348332705 },
 *     readOnly: true, <-- here
 *     loadFrom: null,
 *     whitelist:
 *         ...

有没有办法允许env在运行时修改通过变量设置的变量?如果我设置使用config.json文件设置的值,我可以毫无问题地修改值。

非常感谢任何帮助:-)

4

1 回答 1

1

这是我解决这个问题的方法

nconf.stores.env.readOnly = false;
nconf.set('foo', 789);
nconf.stores.env.readOnly = true;
console.log(nconf.get()); // {"foo":789,"bar":356}

希望有帮助。

于 2017-01-26T11:13:10.253 回答