Node.js:如何加载模块而不执行它们?

我有一个简单的文件model.js如下所示:

 var mongo = require('mongodb'); var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/mydb'; exports.connect = mongo.Db.connect(mongoUri, function(err, db) { console.log("Connect to the database successfully") }); 

并在我的web.js我加载模型使用model = require('./model.js') 。 一个可怕的事情是,虽然我没有调用model.connect() ,消息“连接到数据库成功”仍然logging到我的控制台。 为什么会发生这种情况,有没有办法避免呢?

编辑 :没关系,我find了一个解决方法:

 exports.connect = function(){ mongo.Db.connect(mongoUri, function(err, db) { console.log("Connect to the database successfully") }); } 

 exports.connect = mongo.Db.connect(mongoUri, function(err, db) { console.log("Connect to the database successfully") }); 

您只需调用mongo.Db.connect()并将其结果分配给mongo.Db.connect()
该代码尽快运行require()模块。

相反,你需要创build一个函数:

 exports.connect = function() { ... };