MongoClient TypeError

I am a NodeJS newbie and JS can-kicker trying out DI for the first time. Here are the questions I looked at before deciding to ask mine, since they show the same error: [1][2]

Running my entry point yields:

this.client = new MongoClient(server);
              ^
TypeError: undefined is not a function

Entry point

var config    = require('./config.json');
var Providers = require('./providers');
var providers = new Providers(config.db);
console.log(providers);

./providers/index.js

Both AssetProvider and UserProvider suffer the same error. I think I only need to show one.

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

Problem line marked

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;

From what I have read in other locations online, I don't see anything wrong with my syntax. I have tried the following declaration...

function UserProvider(database, host, port)

as opposed to

var UserProvider = function(database, host, port)

Everything else I did was comparable to slapping a car engine with a wrench. The truth is, I simply do not understand what is so wrong here, but I do know that I just want to make a composition of objects across files so that my entry point can readily use all providers through a single object.

JohnnyHK turned out to be correct about it being a version issue.

Oddly enough, the error did not go away when running npm update mongodb

However, it did go away when I ran npm install mongodb a second time. No changes were made in the code, and mongodb was already inside the local node_modules folder. Even so, I suspect this had to do with a discrepancy between an instance in node_modules and an instance in NODE_PATH.

I'm only speculating as to why exactly npm install solved the problem considering the latest version should have been installed. All I know is that the error is gone and the code is working.

Thank you for the comments!

I got exactly the same issue. After a quick research I realised that I have an old mongodb module version (0.9.x). After installing the latest (1.13.19) - the issue has been fixed.

npm install mongodb@1.3.13