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?
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 [email protected]
.
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 [email protected]
.
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 successiva npm 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
. Vedere
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:
npm config set registry http://registry.npmjs.org/
Si noti che questo tira i moduli del nodo su una connessione HTTP insicura.