Individuelles AngebotKurze Anfrage senden: Antwort am selben Tag, schriftliches Angebot spätestens nach 1 WerktagAntwort am selben Tag · Angebot in 1 WerktagAngebot anfordern
Software

npm ERESOLVE Fehler: "Unable to Resolve Dependency Tree" beheben

Talha Aslan 17 Minuten Lesezeit 4 Aufrufe

npm ERESOLVE Fehler: Was bedeutet er und was tun Sie zuerst?

Der npm ERESOLVE Fehler bedeutet, dass npm install keine Kombination von Paketversionen findet, die alle geforderten Versionsbereiche erfüllt. Meist kollidiert eine Peer Dependency mit einer installierten Version. Lesen Sie zuerst die Fehlerausgabe, dann bringen Sie das betroffene Paket auf eine kompatible Version.

Greifen Sie nicht aus Panik zu --force. Denn die Option bringt die Warnung zum Schweigen, löst den Konflikt aber nicht. Die folgende Reihenfolge kostet nach unserer Erfahrung am wenigsten Zeit und birgt das geringste Risiko.

  1. Suchen Sie den ersten Konflikt in der Ausgabe: Welches Paket verlangt welchen Bereich?
  2. Führen Sie npm explain paketname aus, um zu sehen, warum das Paket im Baum steht.
  3. Heben Sie das betroffene Paket auf eine kompatible Version an oder senken Sie es ab.
  4. Gibt es keine kompatible Version, prüfen Sie das Feld overrides in der package.json.
  5. Nutzen Sie als letzte Möglichkeit --legacy-peer-deps und notieren Sie den Grund.
  6. Committen Sie das Lockfile, damit der Fehler auf anderen Rechnern und in der CI nicht zurückkehrt.

In welcher Reihenfolge beheben Sie den ERESOLVE Fehler am besten?

Die Reihenfolge führt vom sichersten zum riskantesten Weg. Konkret reparieren die ersten drei Schritte den Abhängigkeitsbaum wirklich. Die letzten Schritte lassen Sie den Konflikt dagegen nur übergehen. Das heißt, Sie suchen zuerst die Ursache und lockern die Regel erst danach.

Wir empfehlen das aus einem einfachen Grund: Der Konflikt stammt meistens von einem veralteten Paket. Daher verschwinden, wenn Sie es aktualisieren, oft mehrere Warnungen zugleich. Umgehen Sie die Prüfung dagegen mit einer Option, taucht das Problem später womöglich als ganz anderer Fehler in der Produktion auf.

Die Liste ist ein Diagnosepfad und kein Rezept. Zunächst versuchen Sie die Installation nach jedem Schritt erneut. Wenn ein Schritt hilft, hören Sie dort auf, denn jede zusätzliche Änderung verwischt, was das Problem tatsächlich gelöst hat.

Wie lesen Sie die Ausgabe eines npm ERESOLVE Fehlers?

Die Ausgabe wirkt unübersichtlich, liefert aber drei Fakten: was Sie installieren wollten, welchen Versionsbereich dieses Paket verlangt und welche Version bereits im Baum steht. Also ist die halbe Arbeit getan, wenn Sie diese drei gefunden haben.

Dann sehen Sie meist eine Zeile mit Found, eine Zeile mit Could not resolve dependency und einen Ausschnitt des Baums, der auf den Konflikt zeigt. Der genaue Wortlaut kann sich allerdings je nach npm Version unterscheiden. Suchen Sie deshalb nach einer ähnlichen Meldung und erwarten Sie keine wörtliche Übereinstimmung.

  • Found: die Version, die aktuell im Baum steht.
  • Could not resolve: der Bereich, den das zu installierende Paket verlangt.
  • peer: das gemeinsame Paket, das kompatibel bleiben muss, zum Beispiel eine UI Bibliothek.
  • Fix the upstream dependency conflict: npm weist Sie darauf hin, das Paket selbst zu korrigieren.

Angenommen, die Ausgabe sagt, dass ein Plugin die vorherige Hauptversion einer Bibliothek verlangt. Dann liegt das Problem beim Plugin. Prüfen Sie also, ob es eine neuere Plugin Version gibt, bevor Sie die Bibliothek zurücksetzen.

Speichern Sie die Terminalausgabe außerdem in einer Textdatei. So können Sie darin suchen, die kollidierenden Paketnamen markieren und den Text unverändert an Kollegen senden. Ein eingefügter Text hilft bei der Diagnose schneller als ein Screenshot.

Was ist eine Peer Dependency und warum sehen Sie den npm ERESOLVE Fehler heute öfter?

Eine Peer Dependency ist die Aussage eines Pakets: "Neben mir muss eine kompatible Version dieses anderen Pakets installiert sein." Ein Plugin bringt keine eigene Kopie der Hauptbibliothek mit. Stattdessen nutzt es die Kopie Ihres Projekts, sodass in der App genau eine Version läuft.

Stellen Sie sich zum Beispiel ein Ersatzteil vor. Es bringt keinen eigenen Motor mit, sondern passt in den Motor Ihres Autos. Stimmt das Motormodell nicht, passt das Teil nicht. Die Peer Dependency hält dieses Motormodell fest.

Neuere npm Versionen installieren Peer Dependencies automatisch. Ältere Versionen gaben nur eine Warnung aus und machten weiter. Heute bricht die Installation dagegen ab, wenn sich die Bereiche widersprechen. Ein Projekt, das jahrelang problemlos lief, kann also nach einem npm Update einen Fehler zeigen. In den meisten Fällen ist der Konflikt nicht neu, sondern nur sichtbar geworden.

Verwechseln Sie das nicht mit einem Netzwerkfehler. ERESOLVE ist ein Fehler bei der Auflösung des Baums, während Verbindungsprobleme mit anderen Fehlercodes kommen. Lesen Sie daher zuerst den Code in der Überschrift, dann suchen Sie nicht stundenlang an der falschen Stelle.

Welche Ursachen hat ein npm ERESOLVE Fehler am häufigsten?

Wir haben die Ursachen nach Wahrscheinlichkeit geordnet. Prüfen Sie die ersten zuerst, denn in der Praxis enden die meisten Fälle bei den ersten beiden Punkten.

  1. Ein Plugin unterstützt die neue Hauptversion der Bibliothek noch nicht.
  2. Sie haben die Hauptbibliothek aktualisiert, die Plugins aber nicht.
  3. Zwei Pakete verlangen unvereinbare Bereiche eines gemeinsamen Pakets.
  4. Ein altes Lockfile fixiert Versionen, die nicht mehr passen.
  5. Ihre Node und npm Versionen weichen von den Erwartungen des Projekts ab.
  6. Eine private oder gespiegelte Registry liefert unvollständige Metadaten.

Die Tabelle ordnet dieselben Ursachen Symptomen und Lösungen zu. Lesen Sie sie wie die Liste oben, achten Sie aber besonders auf die Spalte mit der Lösung.

UrsacheSymptomLösung
Plugin steckt in altem BereichCould not resolve, enger Peer BereichNeuere Plugin Version installieren oder Bibliothek zurücksetzen
Halbes UpdateNur einige Pakete auf neuer VersionZusammengehörige Pakete gemeinsam aktualisieren
Zwei Pakete wollen verschiedene BereicheKonflikt in zwei Zweigen des BaumsVersion per overrides festlegen
Veraltetes LockfileFehler im leeren Ordner, auf dem alten Rechner nichtLockfile und node_modules erneuern
Falsche Node VersionDasselbe Projekt verhält sich auf zwei Rechnern andersNode Version an das Projekt angleichen
Unvollständige MetadatenPaket gefunden, Bereich nicht lesbarRegistry Einstellung und Cache prüfen

Wie beheben Sie den npm ERESOLVE Fehler durch passende Versionen?

Die stabilste Lösung ist die Wahl von Versionen, die einander unterstützen. Sehen Sie zuerst nach, welche Bereiche das Paket unterstützt. Der Befehl npm view paketname peerDependencies zeigt das an. Installieren Sie danach die passende Version.

npm view plugin-name peerDependencies
npm install plugin-name@latest
npm install bibliothek-name@vorherige-hauptversion

Die Entscheidung liegt bei Ihnen. Also: Gibt es eine neuere Plugin Version, ist das Update meist besser, weil Sie die Sicherheitskorrekturen der Hauptbibliothek behalten. Wird das Plugin nicht mehr gepflegt, ist das Zurücksetzen der Bibliothek nur ein Notbehelf. Tragen Sie es deshalb als Aufgabe ein.

Lesen Sie vor einem Sprung der Hauptversion das Änderungsprotokoll. Brechende Änderungen stehen dort in der Regel. Das Lesen dauert zehn Minuten, die Fehlersuche bei einer falschen Version dagegen Stunden. Gehen Sie außerdem in kleinen Schritten vor und heben Sie jeweils nur eine Hauptversion an.

Starten Sie die App nach dem Update, denn ein Versionssprung kann die Installation reparieren und trotzdem das Verhalten Ihres Codes ändern. Haben Sie Tests, lassen Sie diese direkt nach der Installation laufen. Sonst öffnen Sie wenigstens die wichtigsten Seiten von Hand.

Wie helfen npm explain und npm ls bei der Spurensuche?

Um zu sehen, warum ein Paket im Baum steht, nutzen Sie npm explain paketname. Die Ausgabe zeigt als Kette, welche Abhängigkeit das Paket mitbringt und welchen Bereich diese verlangt. Haben Sie die Kette gefunden, haben Sie auch den Verursacher gefunden.

npm explain bibliothek-name
npm ls bibliothek-name

Danach listet npm ls den installierten Baum auf. Sehen Sie zwei Versionen desselben Pakets, gibt es eine Kopie zu viel. Eine fehlgeschlagene Installation kann den Baum jedoch unvollständig lassen. Beginnen Sie daher mit npm explain und bestätigen Sie das Ergebnis nach einer erfolgreichen Installation mit npm ls.

Zudem fasst npm outdated zusammen, welche Pakete zurückliegen. Damit erkennen Sie also schnell, wenn Plugins der Hauptbibliothek hinterherhinken. Sie entscheiden also anhand von Daten und müssen nicht raten, welches Paket Sie anfassen.

Was bewirkt --legacy-peer-deps wirklich?

Die Option --legacy-peer-deps sagt npm, dass es Peer Dependencies nicht automatisch installieren und deren Konflikte nicht prüfen soll. Das heißt, npm kehrt zum alten Verhalten zurück. Peer Pakete installieren Sie selbst, und ein Bereichskonflikt stoppt die Installation nicht mehr. Die Installation gelingt dann, der Konflikt bleibt aber bestehen.

npm install --legacy-peer-deps

Die Option "funktioniert" oft, weil der Fehler verschwindet. Sie sollten allerdings wissen, warum: npm überspringt die Prüfung. Ist das Plugin wirklich unverträglich, kann das Problem erst zur Laufzeit auftreten. Schreiben Sie den Grund deshalb in die README oder in den Pull Request.

Die Option begleitet Sie zudem dauerhaft, denn Sie müssen sie bei jedem neuen npm install angeben, und wer sie vergisst, sieht denselben Fehler wieder. Eine gemeinsame Teamregel ist daher günstiger, als jeden einzeln zu erinnern.

Ein Beispielszenario: Ein altes Admin Panel nutzt ein Plugin, das die vorherige Hauptversion einer Bibliothek verlangt. In der Praxis läuft das Plugin womöglich auch mit der neuen Version. Dann ist die Option eine vertretbare, vorübergehende Brücke. Suchen Sie trotzdem nach einer aktuellen Plugin Version.

Was macht --force und warum ist es riskanter?

Die Option --force weist npm an, die Installation trotz Konflikten durchzudrücken. Laut npm Docs erzwingt sie außerdem das Abrufen aus der Registry und übergeht einige Schutzprüfungen. Prüfen Sie das aktuelle Verhalten in der offiziellen Dokumentation.

Der Unterschied ist folgender: --legacy-peer-deps stellt nur die alte Logik für Peer Dependencies wieder her. --force bedeutet breiter "installiere um jeden Preis". Somit akzeptiert die Option kollidierende Versionen im Baum, und das Ergebnis kann unvorhersehbar sein.

  • Zwei Versionen, die sich gegenseitig stören, können nebeneinander landen.
  • Das Lockfile kann auf Versionen springen, die Sie nicht erwartet haben.
  • Das Problem zeigt sich zur Laufzeit statt bei der Installation.
  • Ein Kollege stößt auf denselben Fehler, ohne von Ihrer Option zu wissen.

Machen Sie --force deshalb nicht zur Routine. Brauchen Sie es wirklich, nutzen Sie es als einmaligen Versuch, testen Sie das Ergebnis und machen Sie daraus keine dauerhafte Einstellung. Kurz gesagt rettet Sie eine Option vor dem Fehler, nicht vor seiner Ursache.

Worin unterscheiden sich --legacy-peer-deps und --force?

Beide bringen die Installation durch, übergehen aber unterschiedliche Dinge. Die Tabelle fasst das Risiko jeder Methode zusammen. Als Faustregel gilt: zuerst die Versionskorrektur, dann overrides, dann --legacy-peer-deps und zuletzt --force.

MethodeWas sie tutRisiko
Version anheben oder senkenMacht den Baum wirklich kompatibelGering; Verhalten des Codes testen
overridesLegt eine Paketversion im ganzen Baum festMittel; die Version passt eventuell nicht zum Paket
--legacy-peer-depsStellt die Prüfung der Peer Dependencies auf den alten ModusMittel; Konflikte können zur Laufzeit auftauchen
--forceIgnoriert Konflikte und erzwingt die InstallationHoch; unvorhersehbarer Baum
Saubere NeuinstallationSetzt Lockfile und node_modules zurückGering; Versionen können unerwartet springen

Wie löst das Feld overrides in der package.json einen ERESOLVE Fehler?

Mit dem Feld overrides bestimmen Sie, welche Version eines Pakets npm an beliebiger Stelle im Baum installiert. Kollidiert eine Abhängigkeit einer Abhängigkeit, tragen Sie das Feld in die package.json ein und legen die Version fest. npm wendet diese Festlegung dann im ganzen Baum an.

{
  "overrides": {
    "kollidierendes-paket": "1.2.3"
  }
}

Die Versionsnummer im Beispiel ist erfunden. Lesen Sie in Ihrem Projekt die Ausgabe von npm explain und wählen Sie den echten Bereich. Die Regel beschreiben die npm Docs im Abschnitt zu overrides. Prüfen Sie die genaue Syntax dort.

Diese Methode ist besser als eine Option, weil Ihre Entscheidung in einer Datei sichtbar bleibt und im Team ankommt. Liegt die festgelegte Version allerdings außerhalb des geforderten Bereichs, tragen Sie das Risiko. Hinterlassen Sie deshalb eine Notiz zum Eintrag und entfernen Sie ihn, sobald das Paket selbst aktualisiert ist.

Manchmal liegt die Ursache darin, dass ein Paket gleichzeitig in mehreren Versionen installiert ist. Das ist normal und meist harmlos. Allerdings brauchen Sie bei einer Peer Dependency brauchen Sie jedoch eine einzige Kopie, und genau dort tritt der Konflikt auf.

Wann sollten Sie Lockfile und node_modules löschen?

Ein veraltetes Lockfile kann Versionen fixieren, die nicht mehr passen. Das Symptom ist einfach: Im leeren Ordner erhalten Sie den Fehler, auf Ihrem alten Rechner geht die Installation durch. Dann ist es sinnvoll, das Lockfile und den Ordner node_modules zu löschen und neu zu installieren.

rm -rf node_modules package-lock.json
npm install

Dabei löst npm alle Versionen neu auf und erzeugt einen neuen Baum. Prüfen Sie das neue Lockfile daher mit einem Diff und testen Sie die App. Probieren Sie es zunächst auf einem eigenen Branch. Geht etwas schief, dann ist der Rückweg leicht.

Ist der Cache beschädigt, kann npm cache verify helfen. Machen Sie das aber nicht zum ersten Schritt, denn mit dem Cache haben die wenigsten ERESOLVE Fälle zu tun. Die eigentliche Ursache ist ein Konflikt der Bereiche.

Wie gleichen Sie Node und npm mit dem Projekt ab?

Dieselbe package.json kann auf verschiedenen Node und npm Versionen unterschiedliche Bäume erzeugen. Deshalb ist "bei mir läuft es" so verbreitet. Prüfen Sie zuerst Ihren Rechner mit node --version und npm --version, danach die Erwartung des Projekts.

  • Hat das Projekt ein Feld engines, halten Sie sich an den Bereich dort.
  • Nutzen Sie einen Versionsmanager, legen Sie im Projekt eine Versionsdatei ab.
  • Außerdem legen Sie in der CI Umgebung dieselbe Node Version fest.
  • Stellen Sie außerdem sicher, dass alle im Team dieselbe Hauptversion verwenden.

Ein Paket kann außerdem einen neueren Node Bereich verlangen, als Sie nutzen. Dann scheitert die Installation anders. Lesen Sie den Titel der Fehlermeldung, damit Sie das nicht mit ERESOLVE verwechseln.

Richten Sie Node gerade neu ein, behandelt unsere Anleitung zum Node.js Deployment die Serverseite. Zur Prozessverwaltung lesen Sie unseren Beitrag zu PM2.

Wie verhindern Sie, dass der Fehler in der CI wiederkehrt?

In der CI wollen Sie bei jedem Lauf denselben Baum installieren. Committen Sie das Lockfile und nutzen Sie in der CI npm ci statt npm install. Konkret installiert npm ci genau die Versionen aus dem Lockfile und bricht ab, wenn Lockfile und package.json nicht zusammenpassen.

npm ci

Dieses Verhalten arbeitet für Sie. Deshalb fällt der Widerspruch in der Entwicklung auf und nicht in einem nächtlichen Produktions Build. Der Fehler zeigt sich also früh. Details lesen Sie auf der Seite zu npm ci in den npm Docs.

Müssen Sie eine Option nutzen, schreiben Sie sie ausdrücklich ins CI Skript. Verlassen Sie sich auf eine versteckte lokale Einstellung, erhalten Ihr Kollege und die CI unterschiedliche Ergebnisse. Dann beginnt die Diskussion "bei mir klappt es".

Ist es sinnvoll, legacy peer deps dauerhaft in der .npmrc zu setzen?

Sie können die Einstellung dauerhaft machen, sollten aber vorsichtig sein. Eine .npmrc im Projekt überträgt die Einstellung auf alle im Team und auf die CI. Das ist gut, weil alle dasselbe Ergebnis erhalten. Der Nachteil: Sie schalten die Konfliktprüfung vollständig ab.

legacy-peer-deps=true

Namen und Verhalten der Einstellung beschreibt die Seite zur Konfiguration der npm Docs. Prüfen Sie dort die aktuelle Definition. Den aktuellen Wert zeigt npm config get legacy-peer-deps an.

Unser Rat: Setzen Sie die Einstellung nur als vorübergehende Brücke und notieren Sie den Grund als Kommentar in der Datei. Entfernen Sie sie dann, sobald Sie den Konflikt gelöst haben. Eine dauerhafte Option wird sonst zur technischen Schuld, an die sich Jahre später niemand erinnert.

Auch eine gemeinsame Teamregel hilft. Zum Beispiel kostet die Regel "jeder Pull Request mit einer solchen Option nennt den Grund in der Beschreibung" wenig und schafft viel Transparenz. Außerdem versteht ein neuer Kollege, warum die Einstellung existiert, ohne nachzufragen.

Tritt der npm ERESOLVE Fehler nur bei npm install auf?

Nein. Derselbe Konflikt kann bei npm update, bei npm install paketname und in manchen CI Schritten auftreten. Alle diese Befehle berechnen den Abhängigkeitsbaum neu, und jedes Mal wendet npm dieselben Bereichsregeln an.

Erhalten Sie den Fehler beim Hinzufügen eines neuen Pakets, ist also oft nicht das neue Paket schuld. Stattdessen kollidiert es mit einem älteren Paket im Baum. Suchen Sie zuerst das andere Paket aus der Ausgabe und sehen Sie dann dessen Peer Bereich an.

In einem Monorepo können mehrere package.json Dateien ein gemeinsames Lockfile im Wurzelverzeichnis nutzen. Ein Bereich in einem Workspace wirkt dann auf einen anderen. Aus welchem Workspace der Fehler kommt, lesen Sie im Pfad der Ausgabe von npm explain.

Wie bauen Sie Ihr Projekt auf, um Abhängigkeitskonflikte zu vermeiden?

Konflikte auf null zu senken ist unmöglich, Sie können sie aber seltener machen. Halten Sie erstens die Zahl der Abhängigkeiten klein. Jedes zusätzliche Paket bringt eine neue Bereichsregel in den Baum. Entfernen Sie ungenutzte Pakete in regelmäßigen Abständen.

Aktualisieren Sie zweitens in kleinen, häufigen Schritten. Wer sechs Monate wartet und dann alles auf einmal anhebt, erhöht die Chance auf einen Konflikt. Bei kleinen Schritten also finden Sie das schuldige Paket leicht.

  • Sehen Sie jeden Monat die Ausgabe von npm outdated an.
  • Heben Sie die Hauptbibliothek und ihre Plugins im selben Pull Request an.
  • Beobachten Sie verwaiste Plugins und planen Sie eine Alternative.
  • Committen Sie das Lockfile immer.
  • Legen Sie vor Updates einen eigenen Branch an.

Prüfen Sie drittens bei einem neuen Paket das letzte Update und die unterstützten Bibliotheksversionen. Vor allem das Feld peerDependencies auf der Paketseite ist ein frühes Zeichen für künftige Konflikte. Die Prüfung dauert zwei Minuten und spart Stunden bei der Fehlersuche.

Welche Fragen stellen Sie sich, bevor Sie eine Option nutzen?

Eine Option zu nutzen ist nicht verboten. Es sollte nur eine bewusste Entscheidung sein. Beantworten Sie die folgenden Fragen der Reihe nach. Lauten drei Antworten "nein", verzichten Sie auf die Option.

  1. Gibt es eine neuere Version des kollidierenden Pakets, und habe ich sie ausprobiert?
  2. Läuft das Plugin wirklich mit der neuen Hauptversion, und habe ich es getestet?
  3. Habe ich die Option dokumentiert und das Team informiert?
  4. Habe ich ein Datum oder eine Bedingung zum Entfernen festgelegt?
  5. Liefert die CI mit derselben Option dasselbe Ergebnis?

Diese Fragen machen aus der Option eine geplante Übergangslösung statt einer Abkürzung. Somit bleibt Ihre technische Schuld sichtbar. Außerdem versteht ein neuer Entwickler, warum die Einstellung dort steht.

Welche Fehler sollten Sie bei einem ERESOLVE Fehler vermeiden?

Diese Fehler sehen wir am häufigsten. Jeder wirkt klein, wird aber mit wachsendem Projekt teuer.

  • Den ersten Befehl aus dem Internet einfügen, ohne die Fehlermeldung zu lesen.
  • --force zur Standardlösung machen.
  • Das Lockfile nicht ins Repository aufnehmen.
  • Bei jedem Fehler node_modules löschen und aufs Glück hoffen.
  • Ein Paket mit Sicherheitskorrektur zurücksetzen, nur damit die Installation durchläuft.
  • Dem Team verschweigen, dass Sie eine Option genutzt haben.

Löschen Sie zudem kein Paket, nur damit die Installation durchgeht. Das gelöschte Paket wird womöglich an anderer Stelle gebraucht. Sehen Sie zuerst mit npm explain nach, wer davon abhängt.

Beispielszenario: Warum scheiterte ein altes Admin Panel auf einem neuen Rechner?

Dies ist ein Beispielszenario und kein echter Kundenfall. Zunächst öffnet ein Team öffnet ein vor zwei Jahren eingerichtetes Admin Panel auf einem neuen Computer. Auf dem alten Rechner lief das Projekt problemlos, auf dem neuen erscheint ein ERESOLVE Fehler.

Unsere Diagnose läuft so ab. Zunächst vergleichen wir die Node und npm Versionen. Das npm auf dem neuen Rechner ist neuer und installiert Peer Dependencies automatisch. Danach lesen wir die Ausgabe: Ein Diagramm Plugin verlangt die alte Hauptversion der UI Bibliothek. Mit npm view sehen wir, dass es eine neuere Plugin Version gibt.

Zur Lösung heben wir das Plugin an, erneuern das Lockfile und testen die Seiten von Hand. Eine Option ist daher nicht nötig. Die Lehre ist klar: Das Problem war nicht neu, das neuere npm hat nur einen alten Konflikt sichtbar gemacht.

Welche praktische Checkliste hilft bei einem ERESOLVE Fehler?

Nutzen Sie diese kurze Checkliste beim nächsten Fehler und geben Sie sie Ihrem Team. Arbeiten Sie sie dann der Reihe nach ab und notieren Sie das Ergebnis jedes Schritts.

  1. Notieren Sie die zwei kollidierenden Pakete und ihre Bereiche aus der Ausgabe.
  2. Bestätigen Sie die Kette mit npm explain.
  3. Vergleichen Sie Node und npm Versionen mit dem Projekt.
  4. Bringen Sie das kollidierende Paket auf eine kompatible Version und testen Sie.
  5. Legen Sie bei Bedarf ein Paket per overrides fest.
  6. Brauchen Sie eine vorübergehende Brücke, nutzen Sie --legacy-peer-deps und halten Sie den Grund fest.
  7. Committen Sie das Lockfile und führen Sie in der CI npm ci aus.
  8. Verfolgen Sie vorübergehende Einstellungen mit einer Aufgabe.

Für Nachbarthemen lesen Sie unsere bestehenden Beiträge. Stoßen Sie nach der Installation auf einen Speicherfehler, hilft unsere Anleitung zu JavaScript Heap out of Memory. Bei Dateikonflikten in der Versionsverwaltung lesen Sie Git Merge Konflikte lösen.

Liegt das Problem in Ihrem Code oder in den Abhängigkeiten?

Nicht jeder Installationsfehler ist ein Abhängigkeitsproblem. Manchmal steckt ein Build Fehler, ein Typkonflikt in TypeScript oder ein Unterschied der Serverumgebung dahinter. Einen allgemeinen Ansatz finden Sie in unserem Beitrag zu Debugging Techniken.

Fragen Sie sich, wie Typsicherheit die Verwaltung von Abhängigkeiten beeinflusst, lesen Sie unseren Vergleich von TypeScript und JavaScript. Wollen Sie die fertige App auf einen Server bringen, ergänzt unsere Anleitung zum Next.js Deployment auf einem VPS das Thema gut.

Halten Sie die Lösung schließlich irgendwo fest. Sehen Sie denselben Fehler in sechs Monaten in einem anderen Projekt, möchten Sie wissen, welcher Schritt geholfen hat. Eine kurze Notiz wird zum gemeinsamen Gedächtnis des Teams und erspart Ihnen doppelte Recherche.

Wie unterstützt Sie unser Team bei Abhängigkeits- und Installationsproblemen?

Talha Aslan und Team arbeiten in individuellen Softwareprojekten an Abhängigkeitsverwaltung, CI Einrichtung und Versionsregeln. Hat Ihr Projekt wiederkehrende Installationsfehler, suchen wir gemeinsam mit Ihnen die Ursache.

Denn Installationsfehler sind oft das erste Zeichen für ein größeres Durcheinander: veraltete Pakete, undokumentierte Einstellungen, ein Build, der an einen Rechner gebunden ist. Wer das systematisch aufräumt, senkt die Ausfälle, die später drohen.

Für diese Arbeit können Sie über unsere individuelle Softwareentwicklung ein Angebot anfordern. Den Umfang legen wir nach einer Prüfung Ihres Projekts fest. Dieser Beitrag ist keine technische Garantie; prüfen Sie Befehle und Einstellungen immer in der offiziellen npm Dokumentation.

Häufig gestellte Fragen

Was bedeutet der npm ERESOLVE Fehler?
Der npm ERESOLVE Fehler bedeutet, dass npm die von den Paketen verlangten Versionsbereiche nicht in einem einzigen Abhängigkeitsbaum vereinen kann. Meist kollidiert die Peer Dependency eines Pakets mit der installierten Version. Suchen Sie in der Ausgabe, welches Paket welchen Bereich verlangt, und bringen Sie es auf eine kompatible Version.
Ist die Option legacy peer deps sicher?
Die Option legacy peer deps stellt die Prüfung der Peer Dependencies auf das alte Verhalten zurück, deshalb gelingt die Installation, der Konflikt bleibt aber bestehen. Sie ist allein nicht harmlos, weil die Prüfung übersprungen wird. Ist ein Plugin wirklich unverträglich, zeigt sich das erst zur Laufzeit. Nutzen Sie sie nur als dokumentierte Brücke.
Worin unterscheiden sich force und legacy peer deps?
Die Option legacy peer deps stellt nur die alte Logik für Peer Dependencies wieder her. Die Option force dagegen erzwingt die Installation trotz Konflikten und kann einen weniger vorhersehbaren Baum erzeugen. Probieren Sie deshalb zuerst die Versionskorrektur, dann das Feld overrides und erst zuletzt die Optionen. Prüfen Sie das Verhalten in den npm Docs.
Wann nutze ich das Feld overrides?
Nutzen Sie das Feld overrides, wenn die Abhängigkeit einer Abhängigkeit kollidiert und Sie sie nicht direkt anheben können. Das Feld legt ein Paket im Baum auf die von Ihnen gewählte Version fest. Testen Sie, dass diese Version mit dem anfragenden Paket wirklich funktioniert, und entfernen Sie den Eintrag, sobald das Paket aktualisiert ist.
Warum zeigt mein altes Projekt auf dem neuen Rechner einen ERESOLVE Fehler?
Neuere npm Versionen installieren Peer Dependencies automatisch und brechen ab, wenn sich Bereiche widersprechen, während ältere nur warnten. Ein alter Konflikt wird auf dem neuen Rechner daher sichtbar. Vergleichen Sie die Node und npm Versionen, heben Sie das genannte Paket auf eine kompatible Version an und erneuern Sie das Lockfile.
Wie verhindere ich den Fehler in der CI?
Committen Sie das Lockfile und führen Sie in der CI npm ci statt npm install aus. Der Befehl npm ci installiert genau die Versionen aus dem Lockfile und bricht ab, wenn Lockfile und package.json nicht zusammenpassen. Legen Sie außerdem die Node Version in der CI fest, damit jeder Build denselben Baum erhält.
  • npm
  • ERESOLVE
  • Peer Dependency
  • legacy peer deps
  • package.json overrides
  • Node.js
  • Abhängigkeitsverwaltung
Teilen:
Talha Aslan

Google Partner und Experte für digitales Marketing. Seit 2012 praktisch in SEO, Google Ads, Webdesign und E-Commerce Projekten; jeder Beitrag hier stammt aus dieser Erfahrung.

Nächstes Projekt

Angebot für Ihr Projekt.

Ihre Anfrage geht direkt an Talha Aslan und Team: Strategie von Talha, Umsetzung durch ein erfahrenes Team. Wir melden uns am selben Tag und senden Umfang, Zeitplan und Preis innerhalb von 1 Werktag als schriftliches Angebot.