我的项目结构的根目录中有一个模块(server.js)。它在名为 lib 的目录中包含一个模块:
var mongo = require('./lib/MongoUtils');
lib目录中的另一个模块也需要'MongoUtils'模块,所以它:
var mongo = require('./MongoUtils');
问题是我最终得到了该对象的两个副本(这很糟糕,因为它有一些系统资源,如数据库连接等)。
我已经阅读了 Node.js 缓存警告文档(http://nodejs.org/api/modules.html#modules_module_caching_caveats),所以问题似乎是我指的是具有两个不同路径的同一个模块,因此Node.js 给了我两个副本。这种理解正确吗?
我该如何解决这个问题?我不想只是将我的模块转储到 node_modules 中,因为这是由 npm 通过我的 package.json(和 .gitignore-d)管理的。我考虑将我的本地模块放在 package.json 中(假设这是可能的),但是每当我进行更改时,我都需要运行“npm install”。
如果这不能干净地完成,我会简单地将模块加载到一个地方并传递它,但是如果我的很多模块都发生这种情况,这听起来不具有可扩展性。