node.js, mongoose und mongoDb a schmerz zu installieren :(
Frage
Ich habe Probleme, diese 3 Pakete zu installieren und zusammenzuarbeiten. Hier sind die Schritte, die ich unternommen habe:
- Installierte NodeJS 0.6.3 basierend auf den Anweisungen hier für Linux (ich habe den Teerball von der Website heruntergeladen, anstatt die Distribution in Git zu verwenden): https://github.com/joyent/node/wiki/installation
- Installierte NPM mit der hier gefundenen Onliner -Installation: http://npmjs.org/
- Installierte NPM -Pakete für MongoDB, Mongojs und Mongoose. Alle scheinen wie erwartet zu installieren.
Erstellt ein kleines Programm, um die folgende Ausnahme zu testen und zu erhalten:
Error: Cannot find module 'mongodb/bson' at Function._resolveFilename (module.js:334:11) at Function._load (module.js:279:25) at Module.require (module.js:357:17) at require (module.js:368:17) at Object.<anonymous> (/local/mnt/apps/node-v0.6.3/app.js:6:16) at Module._compile (module.js:432:26) at Object..js (module.js:450:10) at Module.load (module.js:351:31) at Function._load (module.js:310:12) at Array.0 (module.js:470:10)
bson.js erscheint unter diesem Verzeichnis für mich:/opt/node/node_modules/mongoDB/lib/mongoDB/bson
Ich habe versucht, diese Codezeile so anzupassen, dass sie dem entspricht, und immer noch kein Erfolg:
var mongoose = require('mongoose').Mongoose,
ObjectID = require('mongodb/bson').ObjectID;
Irgendeine Idee, was ich falsch mache? Um nur zu klären, muss ich jede NPM -Installation erstellen, die ich heruntergeladen habe, oder macht NPM das?
Tia!
Lösung
mongodb\bson
Ist kein Modul, woher haben Sie dieses Beispiel?
Der normale Einsatz von Mongo im Knoten.js wird erreicht durch:
var mongoose = require('mongoose');
var mongodb = require('mongodb');
Jetzt können Sie eine Verbindung über eine Verbindung über
mongoose.connect("url");
Beim Versuch, das abzurufen ObjectID
Funktion, auf die Sie sich nicht verlassen sollten mongodb
aber weiter mongoose
über:
var schema = mongoose.Schema,
objectId = schema.ObjectId;
Bitte lesen Sie die Mongoose -Dokumentation.
Andere Tipps
Es ist möglich, dass Sie MongoDB im falschen Verzeichnis für Ihr Projekt installiert haben. Eine gute Möglichkeit, diese Art von Problemen zu vermeiden, besteht darin, eine Paket.json -Datei zu verwenden.
Erstellen Sie ein Verzeichnis für Ihr Knotenprojekt und verschieben Sie Ihre .js -Datei in sie. Fügen Sie eine Datei namens Package.json mit diesen Inhalten hinzu:
{
"name": "application-name",
"private": true,
"dependencies": {
"mongodb": ">=0.9.6-7",
"mongoose": ">=0.0.1"
}
}
Sie können das Muster befolgen, um Ihre anderen Abhängigkeiten nach Bedarf hinzuzufügen.
Führen Sie dann aus diesem Verzeichnis "NPM Install" aus. Es wird alle Abhängigkeiten für Ihre App installiert. Von dort sollte Ihre App gut laufen.