Understanding and Resolving npm ERESOLVE Dependency Conflicts

Resolve npm ERESOLVE peer dependency conflicts the right way: identify the real mismatch, align versions, use overrides safely, and know when pnpm or Yarn is a better fit.
Publié:
Aleksandar Stajić
Updated: 16 mars 2026 à 09:12
Understanding and Resolving npm ERESOLVE Dependency Conflicts

Understanding and Resolving npm ERESOLVE Dependency Conflicts

An npm ERESOLVE error means npm couldn't build a dependency tree that satisfies all version rules — most often because of peer dependencies. Since npm 7, peer dependencies are handled strictly during install, so conflicts that previously installed “anyway” now fail fast.

That strictness reduces runtime surprises, but it can block installs when one package expects older versions than your project.

Quick Triage: Find the Actual Conflict

Before you force anything, identify who requires what. These commands usually pinpoint the culprit in under a minute.

npm -v
node -v

# show dependency chain
npm ls @tensorflow/tfjs
npm ls react

# show peer dependency requirements
npm view @tensorflow-models/handpose peerDependencies

# explain why a version was chosen
npm explain @tensorflow/tfjs

Why Peer Dependency Conflicts Happen

Peer dependencies are compatibility contracts. A library says: “I don't ship React / TFJS myself — you must provide a compatible version.” Conflicts happen when two packages demand incompatible version ranges.

  • Package A requires @tensorflow/tfjs ^3, but your project installs @tensorflow/tfjs@4.
  • A plugin requires react@^17, while your app is on react@18.
  • You mixed majors in a package family (e.g. tfjs core v4, backends still v3).

How to Fix npm ERESOLVE (Safest → Most Aggressive)

1) Align Versions (Best Long-Term Fix)

Keep one compatible major across the entire dependency family. This is the fix that survives CI, deployments, and future upgrades.

// package.json (example: align tfjs family on v3)
{
  "dependencies": {
    "@tensorflow/tfjs": "^3.21.0",
    "@tensorflow/tfjs-backend-webgl": "^3.21.0",
    "@tensorflow/tfjs-backend-cpu": "^3.21.0",
    "@tensorflow-models/handpose": "^0.0.7"
  }
}
rm -rf node_modules package-lock.json
npm install

2) Use npm "overrides" (Controlled Forcing, npm 8+)

Use overrides when a transitive dependency pulls the wrong version. This is safer than --force, but you must test runtime behavior.

// package.json
{
  "overrides": {
    "@tensorflow/tfjs": "^4.0.0",
    "@tensorflow/tfjs-backend-webgl": "^4.0.0",
    "@tensorflow/tfjs-backend-cpu": "^4.0.0"
  }
}
rm -rf node_modules package-lock.json
npm install

3) --legacy-peer-deps (Fast Unblock, Less Safety)

Bypasses strict peer resolution and installs anyway. Good for quick experiments — risky as a default in production.

npm install --legacy-peer-deps

4) --force (Last Resort)

Forces an install even when npm knows the tree is inconsistent. Use only if you accept potential runtime breaks.

npm install --force

5) Clean Install Checklist (Fixes Weird Lockfile States)

rm -rf node_modules package-lock.json
npm cache verify
npm install

npm vs pnpm vs Yarn: Practical Differences

All three can hit peer conflicts, but they differ in speed, node_modules strategy, and how quickly they expose "hidden" dependency mistakes.

npm (v7+): strict by default

  • Pros: catches incompatible peer combos early; predictable CI.
  • Cons: blocks installs more often; people reach for flags.
  • Best for: teams that want strict correctness over convenience.

pnpm: fast, disk-efficient, stricter dependency access

pnpm uses a global content-addressable store and links packages. Installs are typically faster and use less disk. Its stricter layout can reveal missing direct dependencies earlier.

corepack enable
corepack prepare pnpm@latest --activate

pnpm install

Yarn: strong workspaces tooling, flexible resolutions

Yarn is popular in monorepos. Depending on Yarn version/config it can feel more forgiving, but the big win is workspaces and its ability to pin versions via resolutions.

corepack enable
corepack prepare yarn@stable --activate

yarn install

# package.json (Yarn) -> "resolutions": { "react": "18.2.0" }

Conclusion

For production: prefer aligning versions or controlled overrides. Use --legacy-peer-deps to unblock quickly, and reserve --force for last resort. If installs are slow or the repo is large, pnpm is often a strong upgrade. If workspaces and strict pinning matter, Yarn is a good fit.

Copy/Paste Snippets

# safest: align versions
rm -rf node_modules package-lock.json
npm install

# controlled: overrides
# package.json -> "overrides": { "pkg": "version" }

# quick unblock
npm install --legacy-peer-deps

# last resort
npm install --force

Related Articles

apache-ubuntu-17-10-install-certbot-lets-encrypt

Convertir MOV en MP4 en utilisant FFmpeg : Un guide simple

Convertir MOV en MP4 en utilisant FFmpeg : Un guide simple

Apprenez à convertir des vidéos MOV en MP4 en utilisant FFmpeg avec des commandes fiables, le traitement par lots et l'optimisation de la qualité pour le web, le streaming et la compatibilité multiplateforme.

Test du matériel et de l'emballage du ZBT Z8102AX : routeur solide, boîte fragile

Test du matériel et de l'emballage du ZBT Z8102AX : routeur solide, boîte fragile

Le ZBT Z8102AX fait une solide première impression en tant que routeur OpenWrt 5G fin en métal noir avec plusieurs connecteurs d'antenne, des emplacements double SIM, des ports USB, LAN/WAN et un ensemble d'accessoires pratique. Le matériel semble utile et sérieux, mais l'emballage est clairement le point faible.

tensorflow

tensorflow

Faut-il acheter un routeur 5G OpenWrt avec un ancien firmware ? Le ZBT Z8102AX comme exemple concret

Faut-il acheter un routeur 5G OpenWrt avec un ancien firmware ? Le ZBT Z8102AX comme exemple concret

Acheter un routeur 5G OpenWrt avec un ancien firmware peut avoir du sens, mais uniquement dans les bonnes conditions. Le ZBT Z8102AX illustre clairement les deux aspects : le matériel est utile, le modem fonctionne et le routeur est resté stable lors des tests, mais OpenWrt 21.02, un emballage faible et des chemins de mise à niveau peu clairs nécessitent une décision d'achat réfléchie.

How to Scan and Clean Your Cloud Linux Server from Malware

How to Scan and Clean Your Cloud Linux Server from Malware

Le prochain routeur 5G OpenWrt : pourquoi le Wi-Fi 7, un processeur plus puissant et un meilleur firmware comptent

Le prochain routeur 5G OpenWrt : pourquoi le Wi-Fi 7, un processeur plus puissant et un meilleur firmware comptent

Le ZBT Z8102AX est un premier échantillon utile, mais la prochaine étape devrait être plus ambitieuse : Wi-Fi 7, une plateforme quatre cœurs plus puissante, une meilleure clarté du firmware, un packaging amélioré et une politique de prix plus stable. L’objectif n’est pas simplement un autre routeur 5G, mais un appareil prosumer basé sur OpenWrt mieux configuré.

Nouveau Qwen 3.5-Plus : l'IA open-source passe aux choses sérieuses

Nouveau Qwen 3.5-Plus : l'IA open-source passe aux choses sérieuses

Découvrez les fonctionnalités et avantages révolutionnaires de Qwen 3.5-Plus d'Alibaba, une IA open-source qui change la donne pour les développeurs.

PostgreSQL 14 Ubuntu Server 23.04

PostgreSQL 14 Ubuntu Server 23.04

linux-server-webserver-git-rechteverwaltung

how-to-make-sql-modeno_engine_substitution-permanent-in-mysql-my-cnf

Marketing de base de données – Approche moderne pour les relations clients

Marketing de base de données – Approche moderne pour les relations clients

Aperçu moderne du marketing de base de données : de la stratégie de données et de l'architecture technique à l'automatisation, au RGPD et aux meilleures pratiques pour des relations clients durables.