プロジェクト構造のルートにモジュール (server.js) があります。libというディレクトリにモジュールが含まれています。
var mongo = require('./lib/MongoUtils');
lib ディレクトリ内の別のモジュールも「MongoUtils」モジュールを必要とするため、次のようになります。
var mongo = require('./MongoUtils');
問題は、オブジェクトのコピーが 2 つになってしまうことです (DB 接続などのシステム リソースがあるため、これは問題です)。
Node.js キャッシュに関する警告のドキュメント ( http://nodejs.org/api/modules.html#modules_module_caching_cafeats )を読んだので、2 つの異なるパスを持つ同じモジュールを参照していることが問題のようです。 Node.js は 2 つのコピーを提供します。この理解は正しいでしょうか?
どうすればこれを回避できますか? モジュールをnode_modulesにダンプしたくありませんでした。これは、package.json(および.gitignore-d)を介してnpmによって管理されているためです。ローカル モジュールを package.json に入れることを考えました (それが可能であると仮定します) が、変更を加えるたびに「npm install」を実行する必要があります。
これがきれいにできない場合は、モジュールを 1 か所にロードして渡すだけですが、多くのモジュールでこれが発生すると、スケーラブルとは言えません。