2015-11-11 18 views
27

per l'installazione MongoDB o mangusta a livello globale si traduce in una dipendenza pari mancante per KerberosKerberos mongodb scrutano dipendenza

Jamess-MacBook-Pro:ka2 jamessherry$ npm install -g mongodb 
/usr/local/lib 
└─┬ [email protected] 
    └── UNMET PEER DEPENDENCY [email protected]~0.0 

npm WARN EPEERINVALID [email protected] requires a peer of [email protected]~0.0 but none was installed. 
Jamess-MacBook-Pro:ka2 jamessherry$ npm install -g mongodb 
- [email protected] node_modules/mongodb/node_modules/kerberos/node_modules/nan 
- [email protected] node_modules/mongodb/node_modules/kerberos 
/usr/local/lib 
└─┬ [email protected] 
    └── UNMET PEER DEPENDENCY [email protected]~0.0 

npm WARN EPEERINVALID [email protected] requires a peer of [email protected]~0.0 but none was installed. 
Jamess-MacBook-Pro:ka2 jamessherry$ npm install -g mongoose 
/usr/local/lib 
└─┬ [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── [email protected] 
    │ ├── UNMET PEER DEPENDENCY [email protected]~0.0 
    │ ├── [email protected] 
    │ └─┬ [email protected] 
    │ ├── [email protected] 
    │ ├── [email protected] 
    │ ├── [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── blu[email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    └── [email protected] 

npm WARN EPEERINVALID [email protected] requires a peer of [email protected]~0.0 but none was installed. 

Qualcuno sa come fare per fissare questo? Se si installa manualmente, è necessario farlo su ogni aggiornamento.

Inoltre, non riesco a trovare un posto per segnalare il bug ...

+0

Provare a installarli localmente anziché globalmente.Globalmente, in realtà, ha senso solo per le utilità della riga di comando. – JohnnyHK

+1

Ho avuto anche questo errore, suggerisco di aprire un problema su JIRA [qui] (https://jira.mongodb.org/browse/NODE/?selectedTab=com.atlassian.jira.jira-projects-plugin:issues- pannello) in quanto non utilizzano Github per tenere traccia dei problemi che rendono più difficile segnalare bug. In alternativa vai nella stanza del gitter [qui] (https://gitter.im/mongodb/node-mongodb-native). L'autore dei driver nodejs risponderà alle domande. –

+2

Hai provato a ignorare l'avviso? Almeno il mio codice sembra funzionare bene finora senza passare attraverso l'ovvio problema di installare il modulo kerberos. La mia ipotesi è che la roba di kerberos venga utilizzata solo per l'autenticazione che potrebbe non essere necessaria in base al tuo caso d'uso. – mthierer

risposta

28

ho dovuto correre npm install --save kerberos mongodb per installare correttamente MongoDB nel mio progetto. Suppongo che tu possa farlo a livello globale, ma potrebbero esserci altri problemi.

Dalle mongodb NPM package documentazione:

Il pacchetto Kerberos è un'estensione C++ che richiede un ambiente di generazione per essere installato sul vostro sistema. Devi essere in grado di creare node.js stesso per poter compilare e installare il modulo kerberos. Inoltre il modulo kerberos richiede che il pacchetto MIT Kerberos a compili correttamente sui sistemi operativi UNIX. Consultare il gestore dei pacchetti del sistema operativo UNIX quali librerie installare.

Si va avanti per offrire la seguente procedura per diagnosticare il problema su sistemi operativi basati su UNIX:

Se non si dispone gli elementi essenziali di build non costruirà. Nel caso di linux avrete bisogno di gcc e g ++, node.js con tutte le intestazioni e python. Il modo più semplice per capire cosa manca è provare a costruire il progetto Kerberos. È possibile farlo effettuando le seguenti operazioni.

git clone https://github.com/christkv/kerberos.git 
cd kerberos 
npm install 

Se tutti i passaggi sono completi, è stata installata la toolchain corretta. Se non si trova node-gyp, è necessario installarlo globalmente.

npm install -g node-gyp 

Se correttamente compila ed esegue i test, sei d'oro. Ora possiamo provare a installare il driver mongod eseguendo il seguente comando.

cd yourproject 
npm install mongodb --save 

Se ancora non riesce, il passaggio successivo è esaminare il registro di NPM. Rieseguire il comando ma in questo caso in modalità dettagliata.

npm --loglevel verbose install mongodb 

Questa operazione consente di stampare tutti i passaggi eseguiti da npm durante il tentativo di installazione del modulo.

Altri problemi possibili:

vostra installazione di Python potrebbero essere hosed fare pausa gyp. Consiglio sempre di testare l'ambiente di distribuzione prima tentando di creare il nodo stesso sul server in questione in quanto ciò dovrebbe portare alla luce tutti i problemi relativi ai pacchetti danneggiati (e ci sono molti pacchetti rotti là fuori).

Un'altra cosa è garantire che l'utente abbia i permessi di scrittura ovunque siano installati i moduli del nodo.

+0

Ha funzionato anche per me. Grazie! – Cyph

+0

Informazioni sull'installazione del driver ufficiale qui https://github.com/mongodb/node-mongodb-native#troubleshooting –

+0

La soluzione è stata sorprendentemente difficile da trovare! Sono stato bloccato con l'errore "mongodb-core richiede un peer di kerberos" dalla scorsa notte – Ash

0
#!/bin/bash 
#My quasi bash script. This worked for Ubuntu v14.04 using Node.js v5.1.0 and mongodb v3.0.7 
clear 

# prerequisites for building node.js from its source files 
sudo apt-get install clang-3.5 make gcc g++ libssl-dev libkrb5-dev 

# where you extracted the latest stable release. https://github.com/nodejs/node/releases 
cd ~/Downloads/node 
# git clone https://github.com/nodejs/node # this does NOT work because it gets a beta/pre release. 
./configure 
# "-j 3" uses two processors for the compile on a duo core processor. 3 means 2 for some reason. 
make -j 3 
sudo make install 
make doc 
make test 

# prerequisites for being able to use '$ npm install mongodb' 
cd ~ 
sudo npm install -g node-gyp 
sudo npm install -g kerberos 

# npm mongodb will NOT install globally '-g'. Therefore you have to install local to each project. 
#cd to/your/project/directory 
# make sure you are in your project directory root and that the "node_modules" directory is not 'root:root' 
npm install mongodb --save 
+1

Puoi migliorare la leggibilità della tua risposta? – iamktothed

+0

L'ho fatto così perché è uno script bash spiegato con commenti che saranno necessari nel file bash. Rende un facile copia-incolla. Se lo cambio, sarà più facile da leggere e non altrettanto facile da usare. – Rick