2013-05-24 3 views
2

저는 NodeJS 초보자이고 JS can-kicker가 DI를 처음 시도했습니다.MongoClient TypeError

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); 

: [2]

[1] 내 진입 점 수율을 실행 : 여기가 같은 오류를 표시하기 때문에, 내 물어 결정하기 전에 바라 보았다 질문입니다 ./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; 

를 표시 . 내가 렌치와 자동차 엔진을 두드림과 비교했다 않았다 다른

var UserProvider = function(database, host, port) 

모든 반대로 나는 ...

function UserProvider(database, host, port) 

을 다음과 같은 선언을 시도했습니다. 진실은, 나는 여기서 무엇이 잘못 되었는가를 간단히 이해하지 못한다. 그러나 나는 단지 파일 전체에 걸쳐 객체의 구성을 만들어 내 진입 점이 단일 객체를 통해 모든 공급자를 쉽게 사용할 수 있다는 것을 알고있다.

+0

이것이 맞는지 확실하지 않지만 2 행에서 var를 MongoClient가 아닌 다른 이름으로 변경하십시오. – Jesta

+0

MongoDB 드라이버의 최신 버전을 실행하고 있습니까? '몽고 클라이언트 (MongoClient) '는 최근에 추가 된 것이다. – JohnnyHK

+0

@JohnnyHK : 방금 nym update mongodb을 해고했습니다. 'npm show mongodb version'은 1.3.6을보고하므로 괜찮을 것입니다. 오류가 계속 발생합니다. –

답변

0

JohnnyHK가 버전 문제가되는 것으로 밝혀졌습니다. 그러나

npm update mongodb을 실행할 때

이상하게

는 오류가 나는 npm install mongodb 두 번째 실행했을 때 그것은 멀리 가지 않았다 멀리 가지 않았다. 코드는 변경되지 않았으며 mongodb은 이미 로컬 node_modules 폴더 안에 있습니다. 그럼에도 불구하고, 이것은 node_modules에있는 인스턴스와 NODE_PATH에있는 인스턴스 사이의 불일치와 관련이 있다고 생각됩니다.

정확히 npm install이 최신 버전이 설치되어 있어야한다고 생각하는 이유는 무엇입니까? 내가 아는 모두는 오류가 사라지고 코드가 작동하고 있다는 것입니다.

의견을 보내 주셔서 감사합니다.

0

정확히 같은 문제가 있습니다. 빠른 연구 끝에 나는 오래된 mongodb 모듈 버전 (0.9.x)을 가지고 있음을 깨달았습니다. 최신 (1.13.19)을 설치 한 후 문제가 해결되었습니다.

npm install [email protected] 
관련 문제