我有一个自定义模块,想提供一个方法来初始化它require
,但在后续需要时直接返回一个对象。
但是模块在第一次需要时会被缓存,因此后续需要仍然返回init
函数而不是obj
直接返回。
server.js:
var module = require('./module.js');
var obj = module.init();
console.log('--DEBUG: server.js:', obj); // <-- Works: returns `obj`.
require('./other.js');
其他.js:
var obj = require('./module.js');
console.log('--DEBUG: other.js:', obj); // <-- Problem: still returns `init` function.
模块.js:
var obj = null;
var init = function() {
obj = { 'foo': 'bar' };
return obj;
};
module.exports = (obj) ? obj : { init: init };
我该如何解决这个问题?或者是否有一个既定的模式来实现这一目标?
但我想保持obj
缓存,因为我的真实init
做了一些我不想在每个require
.