2014-11-05 5 views
23

Also versuche ich meine Node-App zu starten, aber es gibt einige Fehler, die von meiner MongoDB-Installation herrühren.npm install mongoose fails (kerberos und bson errors)

Hier sind die Spezifikationen für meine dev Umgebung:

Knoten => 0.10.33 (installiert von nodejs.org)

npm => 1.4.28 (von NodeJS installiert Org)

GIT => 2.1.3 (homebrewed)

mongodb => 2.6.5 (homebrewed)

Wenn es einen Unterschied macht, habe ich auch die Mean Stack Skeleton als Teil eines Tutorials mit bin.

Auf den Punkt gebracht, wenn ich versuche, meine Knoten App $ node app.js zu laufen, ich folgendes Feedback:

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

Ich überprüfte die builderror.log Dateien sowohl für die kerberos und bson Module. Beide sind jedoch leer.

Einige Untersuchungen, die ich gefunden habe, deuten darauf hin, dass das Problem möglicherweise daran liegt, dass meine Installation keine entsprechende binding.gyp Datei hat.

Auch versucht, $ node-gyp configure in meinem Node.js Projektordner ausgeführt. Und das ist der Fehler, den ich erhielt:

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 

Irgendwelche Ideen, warum ich diese Probleme habe?

EDIT: Nachdem ich den Port in meiner app.js Datei gesetzt habe, um den Port auf denselben zu setzen, den der Express Server hört (duh), bekomme ich mehr Feedback, dass ich Mungo 3.9.4 benutzt habe letzte instabile Version von mongoose. Also habe ich das Modul auf 3.8.18 in meinem package.json gesetzt und habe versucht das Modul neu zu installieren. Ich habe die gleichen Fehler erhalten. Allerdings ist die instabile Release-Feedback jetzt weg.

Antwort

0

Nach cd I ‚D in die kerberos und bson Verzeichnisse verwendete ich den Befehl $ node-gyp rebuild und die korrekt kompilierten Knotenmodule.

Meine app.js Datei, rief ich die folgenden Zeilen:

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

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

Diese Portnummer aus dem Hafen von Datenbankinstanz muss eindeutig sein.

Führen Sie in einem separaten Terminal-Fenster $ mongod aus, um Ihre MongoDB aufzuspulen. Sobald es aufgerufen wird, rufen Sie in einem weiteren Terminal-Fenster $ mongo database. Dadurch wird die Datenbankinstanz namens database für Ihre Node.js-App erstellt, mit der eine Verbindung hergestellt werden soll. Rufen Sie in Ihrem ursprünglichen Terminalfenster auf und es wird ohne Fehlerrückmeldung ausgeführt.

Die Fehler, die ich bekam, waren nicht das Ergebnis einer falschen Erstellung von Mongoose, MongoDB oder einer ihrer Abhängigkeiten. Die Fehler waren das Ergebnis eines Missverständnisses über MongoDB. MongoDB muss als separater Prozess zu Ihrer Node.js-App ausgeführt werden, damit die App eine Datenbankverbindung herstellen kann.

13

Ich habe dies durch die Installation von Node-Gyp in den globalen Bereich behoben. Ich hoffe es hilft.

+0

einfach, süß, und arbeitete für mich –

+0

vielen Dank – Shreyas

4

Ich einfach deinstallieren mongodb und dann mongoose erfolgreich installieren.

npm uninstall mongodb --save 
npm install mongoose --save 
54

Für alle auf einer Linux-Distribution sicherzustellen, dass Sie libkrb5-dev (oder ähnliches Paket Ihrer Distributionen) installiert. Dies wird viele Build-Fehler mit Bson und Kerberos beheben.

+2

hat perfekt funktioniert – MQ87

+1

Vielen Dank, es funktioniert! Ich hatte das gleiche Problem in Linux Mint 17 und beschlossen, das Paket zu installieren: http://community.linuxmint.com/software/view/libkrb5-dev – iarroyo

+1

Verwaltet, Mongoose und MongoDB mit diesem Tipp zu installieren. Ich hatte noch ein paar Warnungen in meinem Terminal, aber keine Fehler. Ubuntu 14.04. – piratemurray

18

für Ubuntu Benutzer zuerst deinstallieren moongose ​​

npm uninstall mongoose --save 

dann das Update ein kerberos installieren

apt-get install libkrb5-dev 

dann "install" moongose ​​wieder

npm install mongoose --save 

Ich hoffe, das es jemand hilft .

Verwandte Themen