Perché npm install dice che ho delle dipendenze non soddisfatte?
Ho un pacchetto node. Quando eseguo npm install
dalla root del pacchetto, installa un sacco di cose, ma poi stampa diversi messaggi di errore che assomigliano a questo:
npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob richiede graceful-fs@'~1.2.0' ma verrà caricato
Devo essere confuso su cosa fa esattamente npm install
. Se rileva una dipendenza, non dovrebbe installarla? In quali condizioni mi dà messaggi di errore come questo, e come posso risolvere le dipendenze?
400
3
Credo che sia perché la risoluzione delle dipendenze è un po' rotta, vedi https://github.com/npm/npm/issues/1341#issuecomment-20634338
Di seguito la possibile soluzione:
Installare manualmente i moduli di primo livello che contengono dipendenze non soddisfatte:
npm install findup-sync@0.1.2
.Ristrutturate il vostro package.json. Metti tutti i moduli di alto livello (serve come dipendenza per altri moduli) in basso.
Esegui nuovamente il comando
npm install
.Il problema potrebbe essere causato dal fallimento di npm di scaricare tutti i pacchetti a causa del timed-out o qualcos'altro.
Nota: Puoi anche installare i pacchetti falliti manualmente usando
npm install findup-sync@0.1.2
.Prima di eseguire
npm install
, eseguire i seguenti passi può aiutare:rm -rf node_modules/
npm cache clean
.Perché 'rimozione di node_modules' a volte è necessaria? Quando un modulo annidato non riesce ad installarsi durante
npm install
, la successivanpm install
non rileverà le dipendenze annidate mancanti.Se questo è il caso, a volte è sufficiente rimuovere la dipendenza di primo livello di quei moduli annidati mancanti, ed eseguire nuovamente
npm install
. VedereMi è successo quando il WIFI è andato giù durante un'installazione di
npm
. Rimuovendonode_modules
ed eseguendo nuovamentenpm install
ho risolto il problema.Le risposte di cui sopra non mi hanno aiutato completamente anche dopo aver eliminato la directory
node_modules
.Il comando qui sotto mi ha aiutato alla fine:
Si noti che questo tira i moduli del nodo su una connessione HTTP insicura.
Src: https://stackoverflow.com/a/13119867/4082503