node.js、mongoose、mongodbインストールするのは痛い:(
質問
これらの3つのパッケージをインストールして一緒に作業するのに苦労しています。これが私がとった手順です:
- Linuxの説明に基づいてNodeJS 0.6.3をインストールしました(GITでディストリビューションを使用するのではなく、サイトからタールボールをダウンロードしました): https://github.com/joyent/node/wiki/installation
- onlinerインストールを使用してNPMをインストールしました。 http://npmjs.org/
- Mongodb、Mongojs、MongooseのNPMパッケージをインストールしました。すべてが予想どおりにインストールされているようです。
次の例外をテストして取得するための小さなプログラムを作成しました。
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は私のためにこのディレクトリの下に表示されます:/opt/node/node_modules/mongodb/lib/mongodb/bson
このコードを調整してそれに合わせて調整しようとしましたが、それでも成功しませんでした。
var mongoose = require('mongoose').Mongoose,
ObjectID = require('mongodb/bson').ObjectID;
私が何を間違えているのか考えはありますか?明確にするために、ダウンロードした各npmインストールをビルドする必要がありますか、それともNPMはそれを行いますか?
ティア!
解決
mongodb\bson
モジュールはありませんが、この例はどこから入手しましたか?
node.jsでのMongoの通常の使用は、次のように達成されます。
var mongoose = require('mongoose');
var mongodb = require('mongodb');
これで、介して接続できます
mongoose.connect("url");
取得しようとするとき ObjectID
頼るべきではない機能 mongodb
しかし、 mongoose
経由:
var schema = mongoose.Schema,
objectId = schema.ObjectId;
読んでください マングースドキュメント.
他のヒント
プロジェクトの間違ったディレクトリにMongoDBをインストールした可能性があります。この種の問題を回避する良い方法の1つは、package.jsonファイルを使用することです。
ノードプロジェクトのディレクトリを作成し、.jsファイルをITに移動します。これらのコンテンツを含むpackage.jsonというファイルを追加します。
{
"name": "application-name",
"private": true,
"dependencies": {
"mongodb": ">=0.9.6-7",
"mongoose": ">=0.0.1"
}
}
パターンに従って、必要に応じて他の依存関係を追加できます。
次に、そのディレクトリから「npmインストール」を実行します。アプリのすべての依存関係をインストールします。そこからアプリは正常に実行されるはずです。