Come posso correggere l'avviso npm UNMET PEER DEPENDENCY?


223

Sono su Windows 10, con Nodo 5.6.0 e npm 3.6.0. Sto cercando di installare materiale angolare e mdi nella mia cartella di lavoro. npm installa errori mdi di materiale angolare con:

+-- angular@1.5.0

+-- UNMET PEER DEPENDENCY angular-animate@^1.5.0

+-- UNMET PEER DEPENDENCY angular-aria@^1.5.0

+-- angular-material@1.0.6

+-- UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57

npm WARN enoent ENOENT: no such file or directory, open
'C:\Users\xxxxx\Desktop\ngClassifieds\package.json' 

npm WARN angular-material@1.0.6 requires a peer of
angular-animate@^1.5.0 but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of angular-aria@^1.5.0
but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of
angular-messages@^1.5.0 but none was installed.

Come posso risolvere questo problema per installare AngularJS Material e MDI installati?


Questo tipo di errore crea qualche problema?
blackHawk,

Non per Reza, quindi è troppo tardi, ma per tutti gli altri ... Prova questo: npm vedi peer materiale angolareDipendenze
peter70

1
In generale, potresti non voler sempre risolvere una dipendenza non soddisfatta. Ad esempio, some-package ha una dipendenza da other-package@^1.5.0 e hai other-package@2.0.0 installato, potrebbe non essere necessario ripristinare la versione. Sarebbe meglio verificare se si stanno effettivamente riscontrando problemi con la versione più recente.
John Pankowicz,

Risposte:


203

npm non installa più le dipendenze peer, quindi è necessario installarle manualmente, eseguire semplicemente npm installle deps necessarie, quindi provare a installare nuovamente quella principale.


Rispondi al commento:

è proprio in quel messaggio, dice che deps ti stai perdendo

UNMET PEER DEPENDENCY angular-animate@^1.5.0 +-- 
UNMET PEER DEPENDENCY angular-aria@^1.5.0 +-- angular-material@1.0.6 +
UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57` 

Quindi è necessario npm install angular angular-animate angular-aria angular-material angular-messages mdi


c'è un modo per trovare i deps per il materiale angolare in modo che io possa installarlo?
Reza

2
Devi aggiungere queste nuove dipendenze alle tue package.json?
0xcaff,

2
@caffinatedmonkey che sarebbe l'ideale
Datsik

9
@caffinatedmonkey se specifichi lo --saveswitch npm aggiornerà il tuo package.json per te (o --save-devse il pacchetto è una dipendenza dallo sviluppo)
McGuireV10

33
non è tutto il punto di npm per avere gestire tutte quelle dipendenze per te? se eseguo un'installazione npm, quindi ottengo un elenco di un sacco di dipendenze non soddisfatte che devo aggiungere manualmente al mio file composer.json manualmente, quale valore sto ricevendo da npm a quel punto?
chiliNUT

66

UNMET PEER DEPENDENCYviene generato un errore quando le dipendenze di uno o più moduli specificati nel package.jsonfile non vengono soddisfatte. Controllare attentamente gli avvisi e aggiornare il package.jsonfile con le versioni corrette delle dipendenze.

Quindi corri

rm -rf node_modules/
npm cache clean
npm install

Ciò installerà correttamente tutte le dipendenze richieste.


3
che cos'è la dipendenza tra pari
aWebDeveloper

Quando si installa un pacchetto, a sua volta potrebbe dipendere da versioni specifiche di altri pacchetti. Se non si fornisce una versione dipendente corretta del pacchetto, la "dipendenza peer" non è soddisfatta. Quindi è necessario aggiornare la versione prevista dei pacchetti dipendenti per risolverlo.
JayKrish,

4
Non ha funzionato per me. Ho ancora ricevuto un avviso sulla necessità di un peer.
Adam Zerner,

1
Molto più pulito della soluzione accettata! Questa serie di codice gestisce ogni possibile caso del problema dell'operazione, anziché il problema specifico che hanno.
HoldOffHunger,

l'uso del comando npm cache clean dà l'errore: A partire da npm @ 5, la cache npm si auto-guarisce da problemi di corruzione e i dati estratti dalla cache sono garantiti come validi. Se vuoi assicurarti che tutto sia coerente, usa invece 'npm cache verifica'. npm ERR! Se sei sicuro di voler eliminare l'intera cache, riesegui questo comando con --force.
CodeMonkey,

30

Nel mio caso tutte le dipendenze erano già lì. Si prega di aggiornare NPM in quel caso in quanto potrebbe essere stato bloccato. Ha risolto il mio problema.

npm install -g npm

Ha funzionato per me. Stavo ricevendo l'errore UNMET PEER DEPENDENCY typescriptdurante il tentativo di installazione tslint. una volta aggiornato npm, è stato necessario installare prima typscript e quindi installare tslint.
Ravimallya,

Per qualche motivo, ho dovuto eseguirlo più di una volta fino a quando non sono state aggiornate tutte le sue dipendenze.
Coder

Questo ha rotto npm per me e ha provocato un sacco di errori.
Jack

14

npm-install-peers ha funzionato per me.

npm install -g npm-install-peers

1
Non ha funzionato per me: "Questo pacchetto non sembra avere alcuna peerDependencies". Tuttavia, ho diversi messaggi come "npm ERR! Peer dep missing: @ angular / common @ ^ 5.0.0 || ^ 6.0.0, richiesto da @ agm / core @ 1.0.0-beta.3"
Almir Campos

2
Questo pacchetto installa solo i peer deps diretti del pacchetto corrente e non gestisce i peer deps dei deps del pacchetto (peer of children).
Alex Skrypnyk,

7

Una delle cause più possibili di questo errore potrebbe essere la definizione di una versione precedente in package.json. Per risolvere questo problema, modificare le versioni in package.json in modo che corrispondano a quelle che si stanno lamentando.

Una volta fatto, esegui npm install e voila !!.


6

Questa risposta non si applica a tutti i casi, ma se non riesci a risolvere l'errore semplicemente digitando npm install , questi passaggi potrebbero essere d'aiuto.

Supponiamo che tu abbia questo errore.

UNMET PEER DEPENDENCY packageA@4.2.0

npm WARN packageB@3.3.0 requires a peer of packageA@^3.1.0 but none was installed.

Questo significa che hai installato la versione 4.2.0 di packageA, ma packageB@3.3.0 richiede la versione 3.xx di pakageA. ( spiegazione di ^ )

Quindi puoi risolvere questo errore declassando il pacchetto A a 3.xx, ma di solito non vuoi effettuare il downgrade del pacchetto.
La buona notizia è che in alcuni casi, il pacchetto B non sta semplicemente al passo con il pacchetto A e il manutentore del pacchetto B sta cercando di aumentare la dipendenza dei pari del pacchetto A a 4.xx
In tal caso, è possibile verificare se esiste una versione superiore del pacchetto B che richiede la versione 4.2.0 del pacchetto A in npm o github.

Ad esempio, vai alla pagina di rilascioinserisci qui la descrizione dell'immagine

Spesso puoi trovare cambiamenti radicali sulla dipendenza in questo modo.

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

Se non trovi nulla nella pagina di rilascio, vai alla pagina di emissione e cerca il problema con parole chiave come peer. Potresti trovare informazioni utili.

inserisci qui la descrizione dell'immagine

A questo punto, hai due opzioni.

1) Esegui l'upgrade alla versione desiderata
2) Lasciare l'errore per il momento, attendere fino al rilascio della versione stabile.

Se scegli l'opzione 1:
In molti casi, la versione non ha latest tag quindi non è stabile. Quindi devi controllare cosa è cambiato in questo aggiornamento e assicurarti che qualcosa non si rompa.

Se scegli l'opzione 2:
Se l'aggiornamento di pakageA dalla versione 3 alla 4 è banale, o se il manutentore di pakageB non ha ancora testato la versione 4 di pakageA ma dice che non dovrebbe essere un problema, potresti considerare di lasciare l'errore.

In entrambi i casi, è meglio testare accuratamente se non si rompe nulla.

Infine, se vuoi sapere perché devi fare una cosa del genere manualmente, questo link spiega bene.


3

Ok, quindi ho lottato a lungo cercando di capirlo. Ecco l' opzione nucleare , per quando hai esaurito tutti gli altri modi ..

Quando hai finito, e funziona ancora, importa il tuo codice attuale in questo nuovo progetto. Correggi eventuali errori di compilazione della versione più recente delle cause angolari.

Questo è quello che ha fatto per me .. 1 ora di rilavorazione contro 6 ore di tentativi di capire che cosa era sbagliato .. vorrei averlo fatto in questo modo per iniziare ..


OP utilizza AngularJS
Edric il

3

La risposta data non funzionerà sempre. Se non risolve il problema. Assicurati di utilizzare anche il simbolo corretto nel tuo package.json. Questo è molto importante per correggere quel mal di testa. Per esempio:

warning " > @angular/compiler-cli@5.2.7" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > tsickle@0.25.6" has incorrect peer dependency "typescript@>=2.4.2 <2.6".

Quindi il mio dattiloscritto deve essere compreso tra 2.4.2 e 2.6, giusto?

Quindi ho cambiato la mia libreria dattiloscritta da usare "typescript": "^2.7"a usando"typescript": "^2.5" . Sembra corretto?

Sbagliato.

I ^mezzi che si sta bene con NPM utilizzando "typescript": "2.5"o "2.6"o"2.7" , ecc ...

Se si vuole imparare ciò che il ^e ~It VEDI media: Qual è la differenza tra la tilde (~) e accento circonflesso (^) in package.json?

Inoltre devi assicurarti che il pacchetto esista. Forse non è possibile "typescript": "2.5.9"cercare i numeri del pacchetto. Per essere davvero al sicuro, rimuovi il ~o il ^se non vuoi leggere cosa significano.


Grazie per questa spiegazione Cosa succede se uso due librerie in cui la prima (ad es. library-one) Usa ad es. Un peer di package@<2.6e l'altra ( library-two) una a pari di package@>2.7? Quindi finirò per avere a che fare con due versioni del packagemio codebase? Come faccio a sapere che quando lo uso library-onedevo usarlo package@2.5.9nel frattempo quando lo uso library-twodevo usarlo package@2.7.1?
tonix

2

Oggi disponibile Angular 2 rc.7 e ho avuto un problema simile con rxjs@5.0.0-beta.12UNMET PEER DEPENDENCY.

Se tu, come me, hai semplicemente sostituito @angular/...rc.6a @angular/...rc.7- non è abbastanza. Perché, ad esempio, @angular/routernon ha una rc.6versione.

In questo caso, rivedere meglio package.json in Avvio rapido


OP utilizza AngularJS
Edric il

-6

è possibile risolvere installando le dipendenze UNMET a livello globale.

esempio: npm install -g @ angular / common @ 4.4.6

installare uno per uno. ha funzionato per me.


È davvero la soluzione migliore, pensato? Installazione a livello globale per ignorare l'attuale "problema" per le dipendenze del progetto?
qx3

1
Ciò installerà dipendenze a livello globale sul tuo computer. I tuoi colleghi non saranno in grado di renderlo conto in un ambiente condiviso.
AC Patrice,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.