我是 NodeJS 新手,也是第一次尝试 DI 的 JS can-kicker。以下是我在决定问我之前看过的问题,因为它们显示相同的错误:[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)
我所做的其他一切都类似于用扳手敲击汽车发动机。事实是,我根本不明白这里有什么问题,但我知道我只想跨文件组合对象,以便我的入口点可以通过单个对象轻松使用所有提供程序。