MongoClienttypes错误

我是一个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) 

我做的所有事情都可以用扳手拍打汽车发动机。 事实是,我根本不明白这里有什么错,但是我知道我只是想在文件之间创build一个对象的组合,这样我的入口就可以很容易地通过一个对象来使用所有的提供者。

JohnnyHKcertificate这是一个版本问题是正确的。

奇怪的是,运行npm update mongodb时,错误没有消失

但是,当我第二次运行npm install mongodb时,它确实消失了。 代码中没有做任何更改,并且mongodb已经在本地node_modules文件夹中。 即使如此,我怀疑这与node_modules的实例和NODE_PATH的实例之间的差异NODE_PATH

我只是在猜测为什么npm install解决了这个问题,考虑到最新的版本应该已经安装了。 我所知道的是错误消失了,代码正在工作。

谢谢你的意见!

我得到了完全相同的问题。 经过一个快速的研究,我意识到我有一个古老的mongodb模块版本(0.9.x)。 安装最新(1.13.19)之后 – 问题已经修复。

 npm install mongodb@1.3.13