Javascript 将对象保存在模块中并从不同模块访问它

Javascript 将对象保存在模块中并从不同模块访问它,javascript,node.js,express,module,Javascript,Node.js,Express,Module,我使用以下代码解析json数据,并将其保存在模块内部,例如,当服务器是(如npm server.js)时,我使用解析json文件的函数parse。 最后,这些解析的JSON保存在对象configObj中,我希望在用户请求期间(通过express)将此对象保存在路由器模块或其他模块中 我如何做到这一点 var configObj; parse = function () { return fs.readFileAsync(file, 'utf8') .the

我使用以下代码解析json数据,并将其保存在模块内部,例如,当服务器是(如npm server.js)时,我使用解析json文件的函数
parse

最后,这些解析的JSON保存在对象
configObj
中,我希望在用户请求期间(通过express)将此对象保存在路由器模块或其他模块中

我如何做到这一点

var configObj;
parse = function () {
        return fs.readFileAsync(file, 'utf8')
            .then(function (res) {
                return JSON.parse(res)
            }).then(function (jsonObj) {
                configObj = jsonObj;
                return jsonObj;
            })
....
        })
    };
    module.exports = {
        parse: parse,
        configObj: configObj
    }

parse
函数只被调用一次,我想在不同的模块中多次访问
configObj

您可以使用如下方法:


如果您使用express,最好的方法是
应用程序。设置
:当您需要
解析
模块功能时,保存结果,例如:

app.set(“parse.configObj”,configObj)

并在需要时获得:

app.get(“parse.configObj”)

或者您可以在require之后使用
require.cache
作用域:

server.js:

var parse = function () {
        return fs.readFileAsync(file, 'utf8')
            .then(function (res) {
                return JSON.parse(res)
            }).then(function (jsonObj) {
                if (typeof require.cache.persist === "undefined") {
                  require.cache.persist = {};
                }
                require.cache.persist.configObj = jsonObj;
                return jsonObj;
            })
    })
};
module.exports = { parse: parse }
应用程序s

var parse = require('./server.js').parse();
console.log( require.cache.persist.configObj );
routes/index.js

var parse = require('./server.js').parse();
console.log( require.cache.persist.configObj );

除了持久性,还有其他方法,因为我已经阅读了我的应用程序文件夹中的文件(json文件),抱歉,但我不认为我可以使用它,因为它们不提供任何许可证,如MIT等。你可以要求作者使用有效的许可证发布它,只需在这里写一行,谢谢,1+你能提供更多关于第二个选项的信息和我的文章背景吗,提前谢谢!require.cache['full/path/to/module'].persist={configObj:configObj}这让人困惑,什么时候做,如何以及如何从不同的模块调用它,所以你是说,如果我放入persist代码并多次调用解析对象,它将被“缓存”?第二个问题是,直到这个缓存对象被“保留”为止这是使用此功能的常见方法?您好,关于我的问题有什么想法吗?如果我正确理解了您的问题,那么您可以简单地
要求
每个文件中的模块和节点只在第一次执行它,然后您将获得缓存副本。