web-dev-qa-db-ja.com

npm install mongooseが失敗する(kerberosおよびbsonエラー)

そのため、ノードアプリを起動しようとしていますが、MongoDBのインストールに起因するいくつかのエラーがあります。

私の開発環境の仕様は次のとおりです:

node => 0.10.33(nodejs.orgからインストール)

npm => 1.4.28(nodejs.orgからインストール)

git => 2.1.3(自作)

mongodb => 2.6.5(自作)

違いがある場合は、チュートリアルの一部として Mean Stack Skeleton も使用しています。

一言で言えば、$ node app.jsを使用してノードアプリを実行しようとすると、次のフィードバックが返されます。

USER$ npm install mongoose

> [email protected] install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
  SOLINK_MODULE(target) Release/kerberos.node: Finished

> [email protected] install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o
  SOLINK_MODULE(target) Release/bson.node
  SOLINK_MODULE(target) Release/bson.node: Finished
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected])

kerberosモジュールとbsonモジュールの両方のbuilderror.logファイルをチェックしました。ただし、両方とも空です。

私が発見したいくつかの調査では、node-gypインストールに対応するbinding.gypファイルがないために問題が発生する可能性があることが示唆されています。

Node.jsプロジェクトフォルダー内で$ node-gyp configureを実行してみました。そして、これは私が受け取ったエラーです:

gyp: binding.gyp not found (cwd: /Users/USER/APP) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/node-gyp/lib/configure.js:343:16)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Darwin 12.5.0
gyp ERR! command "node" "/usr/local/bin/node-gyp" "configure"
gyp ERR! cwd /Users/USER/APP
gyp ERR! node -v v0.10.33
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok

これらの問題を抱えている理由はありますか?

編集:app.jsファイルでポートを設定して、ポートをExpressサーバーがリッスンしているポート(duh)に設定すると、Mongoose 3.9.4を使用していることを示すフィードバックがさらに得られます。 mongooseの最新の不安定リリース。そこで、package.jsonでモジュールを3.8.18に設定し、モジュールを再インストールしようとしました。同じエラーを受け取りました。ただし、不安定なリリースのフィードバックはなくなりました。

24
Caleb Faruki

cdおよびkerberosディレクトリにbson 'dした後、コマンド$ node-gyp rebuildおよびノー​​ドモジュールが正しくコンパイルされました。

俺の app.jsファイル、次の行を呼び出しました。

var app = express();
...
var Mongoose = require('mongoose');
var db = Mongoose.createConnection('localhost','database');

// all environments
app.set('port', process.env.PORT || 3000);

このポート番号は、データベースインスタンスのポートから一意である必要があります。

別のターミナルウィンドウで、$ mongod MongoDBをスプールします。呼び出されたら、さらに別のターミナルウィンドウで、$ mongo database。これにより、Node.jsアプリが接続するdatabaseというデータベースインスタンスが作成されます。元の端末ウィンドウで、$ node app.jsそして、エラーフィードバックなしで実行されます。

私が得ていたエラーは、Mongoose、MongoDB、またはそれらの依存関係の誤ったビルドの結果ではありませんでした。エラーは、MongoDBについての誤解の結果でした。アプリがデータベース接続を確立するには、MongoDBがNode.jsアプリとは別のプロセスとして実行されている必要があります。

0
Caleb Faruki

Linuxディストリビューションのユーザーは、必ずlibkrb5-dev(またはディストリビューションの同様のパッケージ)がインストールされています。これにより、bsonおよびkerberosの多くのビルドエラーが処理されます。

54
TWright

Ubuntuユーザーの場合、まずmoongoseをアンインストールします

npm uninstall mongoose --save

その後、ケルベロスアップデートをインストールします

apt-get install libkrb5-dev

その後、moongoseを再度「インストール」します

npm install mongoose --save

これが誰かに役立つことを願っています。

18
jack.the.ripper

Node-gypをグローバルスコープにインストールして、これを修正しました。それが役に立てば幸い。

$ npm install -g node-gyp 
14
Wreeecks

Mongodbをアンインストールしてから、mongooseを正常にインストールします。

npm uninstall mongodb --save
npm install mongoose --save
4
dinglufe