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