我是一名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);
./提供商/ 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);
}
./提供商/ 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)
我做的其他事情都与用扳手拍打汽车发动机相当。事实是,我根本不明白这里有什么错误,但我知道我只想在文件中组合对象,以便我的入口点可以通过单个对象轻松使用所有提供者。
答案 0 :(得分:0)
JohnnyHK证明这是一个版本问题是正确的。
奇怪的是,运行npm update mongodb
然而,当我第二次跑npm install mongodb
时,它确实消失了。
代码没有变化,mongodb已经在本地
node_modules
文件夹。即便如此,我怀疑这与node_modules
中的实例与NODE_PATH
中的实例之间的差异有关。
我只是在猜测为什么确切地npm install
解决了问题,考虑到应该安装最新版本。我所知道的是错误已经消失,代码正在运行。
感谢您的评论!
答案 1 :(得分:0)
我有完全相同的问题。经过快速研究后,我意识到我有一个旧的mongodb模块版本(0.9.x)。安装最新版本(1.13.19)后 - 问题已修复。
npm install mongodb@1.3.13