npm ERESOLVE-Abhängigkeitskonflikte verstehen und beheben

Veröffentlicht:
Aleksandar Stajić
Aktualisiert am: 22. Dezember 2025 um 20:54
npm ERESOLVE-Abhängigkeitskonflikte verstehen und beheben

Illustration

npm ERESOLVE-Abhängigkeitskonflikte verstehen und beheben

npm ERESOLVE-Fehler treten auf, wenn es bei der Abhängigkeitsauflösung zu Konflikten kommt – insbesondere bei Peer Dependencies. Seit npm 7 gelten strengere Regeln, damit alle Pakete in einem Projekt kompatible Versionen gemeinsam genutzter Abhängigkeiten verwenden.

Das hilft, Laufzeitprobleme zu vermeiden, kann aber bei der Installation zu Fehlern führen, sobald ein Versionskonflikt erkannt wird.

Warum entstehen Peer-Dependency-Konflikte?

Peer Dependencies stellen sicher, dass Pakete, die eine Abhängigkeit teilen, mit kompatiblen Versionen arbeiten. Konflikte entstehen typischerweise, wenn:

  • Ein Paket eine ältere Version einer Abhängigkeit verlangt (z. B. @tensorflow/tfjs@^3.0.0).
  • Du in deiner package.json eine neuere Version derselben Abhängigkeit definierst (z. B. @tensorflow/tfjs@4.x.x).
  • npm die Auflösung strikt durchsetzt, um potenzielle Bugs durch Inkompatibilitäten zu vermeiden.

So behebst du npm ERESOLVE-Fehler

1. --legacy-peer-deps verwenden

Die einfachste Lösung ist, die strikte Peer-Dependency-Prüfung zu umgehen:

npm install --legacy-peer-deps

Damit nutzt npm den älteren Auflösungsalgorithmus und ignoriert Peer-Dependency-Konflikte.

2. Installation mit --force erzwingen

Wenn das Problem bestehen bleibt, kannst du die Installation erzwingen:

npm install --force

Hinweis: --force kann zu Laufzeitproblemen führen, wenn die betroffenen Abhängigkeiten tatsächlich inkompatibel sind.

3. Versionsstände angleichen

Prüfe die Peer-Dependency-Anforderungen des Pakets, das den Konflikt auslöst, und gleiche die Versionen an. Beispiel: Wenn @tensorflow-models/handpose @tensorflow/tfjs@^3.0.0 erwartet, sollten alle TensorFlow-Abhängigkeiten konsistent sein:

{
  "dependencies": {
    "@tensorflow/tfjs": "^3.3.0",
    "@tensorflow/tfjs-backend-webgl": "^3.3.0",
    "@tensorflow/tfjs-backend-cpu": "^3.3.0",
    "@tensorflow-models/handpose": "^0.0.7"
  }
}

Danach installierst du die Abhängigkeiten erneut:

npm install

4. overrides nutzen (npm 8+)

Ab npm 8 kannst du per overrides bestimmte Versionen erzwingen:

{
  "overrides": {
    "@tensorflow/tfjs-backend-webgl": "^4.0.0",
    "@tensorflow/tfjs-backend-cpu": "^4.0.0"
  }
}

So verwenden alle Pakete die vorgegebenen Versionen – auch dann, wenn sie offiziell ältere Anforderungen deklarieren.

5. Zu Yarn wechseln

Wenn npm weiterhin blockiert, kann Yarn eine Alternative sein, da es bei Konflikten oft toleranter ist:

npm install -g yarn
yarn install

Warum akzeptiert npm nicht automatisch neuere Versionen?

npm vermeidet standardmäßig neuere Versionen, um Kompatibilitätsprobleme zu verhindern. Neuere Releases können Breaking Changes oder unerwartetes Verhalten einführen, auf das abhängige Pakete nicht vorbereitet sind. Die strikte Auflösung sorgt für Konsistenz und reduziert schwer auffindbare Bugs, erfordert aber manchmal manuelle Anpassungen.

Fazit

Auch wenn die strikte Abhängigkeitsauflösung von npm gelegentlich Installationen erschwert, hilft sie, stabile und kompatible Setups zu gewährleisten. Mit --legacy-peer-deps, konsistenten Versionsständen, overrides oder Yarn lassen sich ERESOLVE-Fehler in der Praxis zuverlässig beheben.