カスタム モジュールがあり、 first で初期化するメソッドを提供したいのですがrequire
、後続の require でオブジェクトを直接返します。
ただし、モジュールは最初に要求されたときにキャッシュされるため、後続の要求は直接返すのではinit
なく、関数を返す必要がありobj
ます。
サーバー.js:
var module = require('./module.js');
var obj = module.init();
console.log('--DEBUG: server.js:', obj); // <-- Works: returns `obj`.
require('./other.js');
other.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
。