如果有人发送reload
命令,我需要在多个文件中重新加载config lorenwests配置模块。为实现这一目标,我遵循了this issue,但这对我没有用。
如果有帮助,我正在研究NodeJS 8.5版。
这些是我的代码文件:
main.js
let vorpal = require("vorpal")();
let { childConfig } = require("./child.js");
vorpal
.command("reload", "Reloads the config", {})
.action((args, callback) => {
delete require.cache[require.resolve("config")];
vorpal.log("reloaded config");
callback();
});
vorpal
.command("config <item>", "Shows an item from the config", {})
.action((args, callback) => {
vorpal.log("main config: `" + require("config").get(args.item) + "`, child config: `" + childConfig(args.item) + "`");
callback();
});
vorpal
.delimiter("test$")
.show();
child.js
exports.childConfig = function (cfg) {
return require("config").get(cfg);
}
配置/ default.js
module.exports = {
"hello": "test",
}
答案 0 :(得分:0)
您所做的是删除require缓存的数据,但这可能还不够。您还需要再次读取数据。
似乎lorenwest与reload functionnality有着悠久的历史,特别是不鼓励这样做,因为它应该用于部署配置,而不是运行时配置。 (https://github.com/lorenwest/node-config/issues/188)
你可能会尝试用lorenwest重新读取文件(即使我看不到你在哪里使用它),并手动刷新配置变量。