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

我正在使用下面的代码来parsingjson数据,并将其保存在我的模块内部,例如,当服务器是(如npm server.js)我使用parsingjson文件的函数parse
最后,这些parsing后的jsons被保存在对象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

你可以使用像node-persist这样的东西:

 var storage = require('node-persist'); storage.setItem('config', configObj); console.log(storage.getItem('config')); 

如果你使用express最好的方法是app.set :当你需要你的parse模块的function保存结果,例如:

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 } 

应用

 var parse = require('./server.js').parse(); 

路线/ index.js

 console.log( require.cache.persist.configObj );