首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoClient TypeError

MongoClient TypeError
EN

Stack Overflow用户
提问于 2013-05-24 02:53:44
回答 2查看 1.5K关注 0票数 2

我是一个NodeJS新手,JS可以第一次尝试DI。以下是我在决定问我的问题之前看过的问题,因为它们显示了相同的错误:[1][2]

运行我的入口点会产生:

代码语言:javascript
复制
this.client = new MongoClient(server);
              ^
TypeError: undefined is not a function

入口点

代码语言:javascript
复制
var config    = require('./config.json');
var Providers = require('./providers');
var providers = new Providers(config.db);
console.log(providers);

./providers/index.js

AssetProvider和UserProvider都有相同的错误。我想我只需要展示一个。

代码语言:javascript
复制
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

问题线标记

代码语言:javascript
复制
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;

从我在其他网站上读到的资料来看,我没有发现我的语法有什么问题。我试过以下声明..。

代码语言:javascript
复制
function UserProvider(database, host, port)

而不是

代码语言:javascript
复制
var UserProvider = function(database, host, port)

我所做的一切都相当于用扳手拍打汽车发动机。事实是,我根本不明白这里有什么问题,但我知道我只是想在文件中对对象进行组合,这样我的入口点就可以通过一个对象很容易地使用所有提供程序。

EN

回答 2

Stack Overflow用户

发布于 2013-05-24 21:51:08

事实证明,JohnnyHK认为这是一个版本问题是正确的。

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

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

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

谢谢您的评论!

票数 0
EN

Stack Overflow用户

发布于 2013-10-20 15:39:14

我也有同样的问题。经过快速的研究,我意识到我有一个旧的mongodb模块版本(0.9.x)。安装最新版本(1.13.19)后,问题已经解决。

代码语言:javascript
复制
npm install mongodb@1.3.13
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16727008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档