npm install bricht mit ERESOLVE und 'unable to resolve dependency tree' ab? So löst du Peer-Dependency-Konflikte richtig statt mit --force.
Aufwand:
ca. 15 Min.
Das Symptom
Du klonst ein Projekt, tippst npm install – und statt eines fertigen
node_modules erscheint ein roter Block mit code ERESOLVE und der Zeile
„unable to resolve dependency tree“. npm listet penibel auf, welches Paket
welche Version von etwas verlangt, und verweigert dann den Dienst. Nichts wird
installiert.
Die „Layer 8“-Wahrheit
Das ist kein Zufallsfehler, sondern npm, das seinen Job ernst nimmt. Seit
Version 7 zieht npm Peer-Dependencies automatisch mit und prüft streng, ob alle
Pakete mit derselben Version eines gemeinsamen Bausteins leben können. Passt
das nicht zusammen, verweigert npm lieber die Installation, als dir stillschweigend
eine kaputte Kombination unterzuschieben. Der Reflex, sofort --force
draufzuwerfen, übertönt nur die Warnung – der eigentliche Konflikt bleibt. Wer
kurz liest, wer hier welche Version verlangt, löst das Problem an der Wurzel
statt es zu übermalen.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Die Fehlermeldung wirklich lesen
npm nennt die Beteiligten exakt: 'Found' zeigt die installierte Version, 'Could not resolve dependency' und 'peer ... from ...' zeigen, wer welche Version verlangt. Damit ist der Konflikt schon benannt.
2.
Versionen in package.json angleichen
Meist verlangt ein Paket eine ältere/neuere Hauptversion eines Peers (z. B. eine ältere React-Version). Die Abhängigkeit oder das konfligierende Paket auf eine zueinander passende Version bringen und neu installieren:
npm install <paket>@<passende-version>
3.
Übergangsweise die strikte Prüfung lockern
Wenn eine passende Kombination gerade nicht möglich ist, npm 6-Verhalten erzwingen. Das installiert trotz Peer-Warnung, ohne Konflikte zu überschreiben:
npm install --legacy-peer-deps
4.
Sauberen Zustand herstellen
Bei hartnäckigen Fällen node_modules und Lockfile verwerfen und frisch auflösen lassen. So verschwinden Alt-Reste aus früheren Installationen:
rm -rf node_modules package-lock.json
npm install
5.
--force nur bewusst als Notausgang
Der letzte Ausweg überschreibt Konflikte aktiv. Nur nutzen, wenn klar ist, dass die Kombination funktioniert – danach die App gründlich testen:
npm install --force
Häufige Fragen (FAQ)
?Was heißt ERESOLVE bei npm?
Seit npm 7 installiert npm Peer-Dependencies automatisch mit und prüft sie strikt. ERESOLVE bedeutet, dass zwei Pakete unvereinbare Versionen desselben Peers verlangen – npm kann keinen Abhängigkeitsbaum bilden, der alle Anforderungen erfüllt.
?Ist --force oder --legacy-peer-deps besser?
--legacy-peer-deps ignoriert nur die strikte Peer-Prüfung und verhält sich wie npm 6 – meist der harmlosere Übergang. --force überschreibt zusätzlich Konflikte und kann kaputte Kombinationen installieren. Beides ist ein Pflaster; die saubere Lösung sind passende Versionen.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.
npm install -g bricht mit 'EACCES: permission denied' ab? Nicht sudo verwenden. So installierst du globale Pakete korrekt über nvm oder ein eigenes Prefix.