web-dev-qa-db-fra.com

echec de l'installation de npm mongoose (erreurs kerberos et bson)

Je tente donc de lancer mon application de nœud, mais il y a quelques erreurs découlant de mon installation de MongoDB.

Voici les spécifications de mon environnement de développement:

node => 0.10.33 (installé à partir de nodejs.org)

npm => 1.4.28 (installé à partir de nodejs.org)

git => 2.1.3 (homebrewed)

mongodb => 2.6.5 (homebrewed)

Si cela fait une différence, j'utilise également le Mean Stack Skeleton dans le cadre d'un tutoriel.

En résumé, lorsque j'essaie d'exécuter mon application de nœud à l'aide de $ node app.js, je reçois les commentaires suivants:

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

J'ai vérifié les fichiers builderror.log pour les modules kerberos et bson. Cependant, les deux sont vides.

Certaines recherches que j'ai trouvées donnent à penser que le problème pourrait provenir du fait que mon installation node-gyp ne possède pas de fichier binding.gyp correspondant.

Également essayé d'exécuter $ node-gyp configure dans mon dossier de projet Node.js. Et voici l'erreur que j'ai reçue:

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

Des idées pour lesquelles j'ai ces problèmes?

EDIT: Après avoir configuré le port dans mon fichier app.js pour qu'il soit identique à celui sur lequel écoute le serveur Express (duh), je reçois davantage de retours indiquant que j'utilisais Mongoose 3.9.4, qui est la dernière version instable de mongoose. J'ai donc défini le module sur 3.8.18 dans mon package.json et tenté de réinstaller le module. J'ai reçu les mêmes erreurs. Cependant, le retour d'information sur les versions instables a disparu.

23
Caleb Faruki

Après avoir cd 'd dans les répertoires kerberos et bson, j'ai utilisé la commande $ node-gyp rebuild et les modules de nœud compilés correctement.

Mon fichier app.js, j’ai appelé les lignes suivantes:

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

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

Ce numéro de port doit être unique par rapport au port de votre instance de base de données.

Dans une fenêtre de terminal séparée, exécutez $ mongod pour spool up votre MongoDB. Une fois que cela est appelé, dans une autre fenêtre de terminal, vous appelez $ mongo database. Cela crée l'instance de base de données appelée database pour que votre application Node.js se connecte. Dans la fenêtre d'origine de votre terminal, appelez $ node app.js et il s'exécutera sans aucun retour d'erreur.

Les erreurs que je recevais ne résultaient pas d'une construction incorrecte de Mongoose, de MongoDB ou de l'une de leurs dépendances. Les erreurs résultaient d'une idée fausse sur MongoDB. MongoDB doit être exécuté en tant que processus distinct de votre application Node.js pour que celle-ci établisse une connexion à la base de données.

0
Caleb Faruki

Pour tous les utilisateurs d’une distribution Linux, assurez-vous d’avoir installé libkrb5-dev (ou le paquet similaire de votre distribution). Cela résoudra de nombreuses erreurs de compilation avec bson et kerberos.

54
TWright

Pour les utilisateurs d'ubuntu, commencez par désinstaller Moongose.

npm uninstall mongoose --save

puis installez la mise à jour de Kerberos 

apt-get install libkrb5-dev

puis "installer" à nouveau moongose

npm install mongoose --save

J'espère que cela aide quelqu'un là-bas.

18
jack.the.ripper

J'ai résolu ce problème en installant node-gyp dans la portée globale. J'espère que ça aide.

$ npm install -g node-gyp 
14
Wreeecks

Je viens de désinstaller Mongodb, puis d'installer Mangouste avec succès.

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