重新加载lorenwest的NodeJS配置模块

时间:2017-10-02 13:02:08

标签: node.js vorpal.js

如果有人发送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",
}

1 个答案:

答案 0 :(得分:0)

您所做的是删除require缓存的数据,但这可能还不够。您还需要再次读取数据。

似乎lorenwest与reload functionnality有着悠久的历史,特别是不鼓励这样做,因为它应该用于部署配置,而不是运行时配置。 (https://github.com/lorenwest/node-config/issues/188

你可能会尝试用lorenwest重新读取文件(即使我看不到你在哪里使用它),并手动刷新配置变量。