Javascript 先导出函数,然后导出对象

Javascript 先导出函数,然后导出对象,javascript,node.js,node-modules,Javascript,Node.js,Node Modules,我有一个自定义模块,希望提供一个方法,在第一个require时初始化它,但在后续requires时直接返回一个对象 但是模块在第一次需要时会被缓存,因此后续需要仍然返回init函数,而不是直接返回obj server.js: var module=require('./module.js'); var obj=module.init(); console.log('--DEBUG:server.js:',obj);// 有一些方法可以清除require缓存。你可以在这里查一下 然而,我认为这不是

我有一个自定义模块,希望提供一个方法,在第一个
require
时初始化它,但在后续requires时直接返回一个对象

但是模块在第一次需要时会被缓存,因此后续需要仍然返回
init
函数,而不是直接返回
obj

server.js:

var module=require('./module.js');
var obj=module.init();

console.log('--DEBUG:server.js:',obj);// 有一些方法可以清除require缓存。你可以在这里查一下 然而,我认为这不是一个好主意。我建议你通过你需要的模块。即,仅初始化一次,然后将其分发到其他模块

server.js:

var module = require('./module.js');
var obj = module.init();

require('./other.js')(obj);
other.js:

module.exports = function(obj) {
    console.log('--DEBUG: other.js:', obj); // <-- The same obj
}
var obj = null;

var init = function() {
    obj = { 'foo': 'bar' };
    return obj;
};

module.exports = { init: init };