我是一个NodeJS新手,JS可以第一次尝试DI。以下是我在决定问我的问题之前看过的问题,因为它们显示了相同的错误:[1][2]
运行我的入口点会产生:
this.client = new MongoClient(server);
^
TypeError: undefined is not a function入口点
var config = require('./config.json');
var Providers = require('./providers');
var providers = new Providers(config.db);
console.log(providers);./providers/index.js
AssetProvider和UserProvider都有相同的错误。我想我只需要展示一个。
module.exports = function Provider(dbConfig)
{
var UserProvider = require('./userProvider');
var AssetProvider = require('./assetProvider');
this.users = new UserProvider (dbConfig.name, dbConfig.host, dbConfig.port);
this.assets = new AssetProvider(dbConfig.name, dbConfig.host, dbConfig.port);
}./providers/userProvider.js
问题线标记
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
var Server = mongodb.Server;
var ObjectID = mongodb.ObjectID;
var UserProvider = function (database, host, port) {
var server = new Server(host, port, { auto_reconnect: true });
// Error is here
this.client = new MongoClient(server);
this.client.open(function (error, client) {
this.db = client.db(database);
});
};
// ...a bunch of prototype stuff...
// ...
module.exports = UserProvider;从我在其他网站上读到的资料来看,我没有发现我的语法有什么问题。我试过以下声明..。
function UserProvider(database, host, port)而不是
var UserProvider = function(database, host, port)我所做的一切都相当于用扳手拍打汽车发动机。事实是,我根本不明白这里有什么问题,但我知道我只是想在文件中对对象进行组合,这样我的入口点就可以通过一个对象很容易地使用所有提供程序。
发布于 2013-05-24 21:51:08
事实证明,JohnnyHK认为这是一个版本问题是正确的。
奇怪的是,当运行npm update mongodb时,错误并没有消失。
然而,当我第二次运行npm install mongodb时,它确实消失了。代码中没有进行任何更改,mongodb已经在本地node_modules文件夹中。即便如此,我仍怀疑这与node_modules中的实例和NODE_PATH中的实例之间的差异有关。
考虑到应该安装最新版本,我只是猜测为什么npm install确实解决了这个问题。我所知道的就是错误已经消失,并且代码正在工作。
谢谢您的评论!
发布于 2013-10-20 15:39:14
我也有同样的问题。经过快速的研究,我意识到我有一个旧的mongodb模块版本(0.9.x)。安装最新版本(1.13.19)后,问题已经解决。
npm install mongodb@1.3.13https://stackoverflow.com/questions/16727008
复制相似问题