Aller au contenu principal
Dev Serein
Retour aux solutions
Frontend · BackendIntermédiaire

npm : résoudre ERESOLVE et les conflits de dépendances

Identifier les peerDependencies incompatibles, choisir les bonnes versions et retrouver une installation reproductible en CI.

ERESOLVE signale des dépendances incompatibles. Exécutez les commandes à la racine d’un projet géré avec npm, sans changer son gestionnaire ni supprimer son lockfile.

Lire les deux côtés du conflit

Dans le message npm, repérez Found, puis Could not resolve dependency et la ligne peer. Exemple fictif :

Found: framework@4.0.0
Could not resolve dependency:
peer framework@"^3.0.0" from plugin@2.0.0

Ici, le plugin attend la version majeure 3 du framework, mais le projet utilise la 4. Réinstaller les mêmes versions ne peut pas corriger cette incompatibilité.

Vérifiez aussi l’environnement :

node --version
npm --version
npm pkg get engines packageManager dependencies devDependencies
git status --short

Alignez Node et npm sur les versions prévues par le projet et la CI. Une erreur EBADENGINE concerne cette compatibilité et demande un diagnostic distinct.

Trouver qui impose la version

Dans les commandes suivantes, remplacez NOM_DU_PAQUET, NOM_DU_PLUGIN et VERSION_CANDIDATE par les valeurs de votre erreur :

npm ls NOM_DU_PAQUET
npm explain NOM_DU_PAQUET
npm view NOM_DU_PLUGIN@VERSION_CANDIDATE peerDependencies engines

npm ls peut sortir avec une erreur lorsqu’il détecte un arbre invalide : sa sortie reste utile. npm explain décrit l’installation présente ; si elle n’existe pas encore, partez du rapport ERESOLVE et des métadonnées renvoyées par npm view.

Une peerDependency est une compatibilité attendue avec un paquet fourni par le projet, par exemple React pour un composant React. Elle ne signifie pas que deux versions majeures seront interchangeables.

Aligner les dépendances

Choisissez selon le projet : mettre le plugin à une version compatible, conserver une version du framework qu’il prend en charge, ou remplacer le plugin s’il n’est plus maintenu. Consultez son guide de migration avant une mise à jour majeure.

Après avoir choisi la version, installez-la dans la même catégorie qu’avant :

npm install NOM_DU_PLUGIN@VERSION_COMPATIBLE

Pour un outil déjà placé dans devDependencies, utilisez plutôt npm install --save-dev NOM_DU_PLUGIN@VERSION_COMPATIBLE. Dans un monorepo npm, ciblez le workspace concerné avec --workspace NOM_DU_WORKSPACE.

Si plusieurs versions doivent changer ensemble, ajustez leurs contraintes dans package.json, puis lancez npm install une fois. Relisez ensuite :

git diff -- package.json package-lock.json
npm ls NOM_DU_PAQUET

Ne supprimez pas le lockfile par réflexe : cela peut renouveler de nombreuses dépendances sans rapport avec le conflit. Un overrides doit rester une correction ciblée dont vous avez vérifié la compatibilité.

Comprendre les contournements

Option Effet Limite
--legacy-peer-deps Ignore les contrats de peerDependencies pendant la construction de l’arbre L’installation peut réussir avec des paquets incompatibles
--force Désactive plusieurs protections npm Peut accepter des conflits et des versions non prises en charge
npm cache verify Contrôle le cache Ne résout pas des contraintes de versions contradictoires

Pour un ancien projet qui dépend déjà de legacy-peer-deps, gardez sa configuration cohérente entre le poste et la CI le temps d’organiser la migration. Vérifiez les valeurs actives avec npm config get legacy-peer-deps et npm config get force ; ne changez pas la configuration globale pour corriger un seul dépôt.

Valider avec une installation propre

Après avoir sauvegardé votre travail, lancez :

npm ci
npm run

npm ci remplace node_modules, exige un lockfile cohérent avec package.json et n’actualise pas ces fichiers. Les installations peuvent exécuter les scripts des dépendances : travaillez avec des paquets de confiance.

npm run liste les scripts disponibles. Exécutez les tests, le contrôle de types et le build prévus par le projet. Commitez ensemble le manifeste, le lockfile et toute configuration npm de projet nécessaire. Une installation réussie ne prouve pas à elle seule que le plugin fonctionne.

Ressources

SUPER CALCULATEUR / CONNEXION ÉTABLIE

UN PASSAGE SECRET DANS DEV SEREIN

Bienvenue sur
Code Lyoko.

Le monde virtuel n’était qu’à quelques lettres.
Jérémie a ouvert la connexion. À toi de jouer.

Des arbres infinis, des chemins suspendus. Garde un œil sur la mer numérique.

LYOKO-GUERRIERS

Aelita · Yumi · Ulrich · Odd

SCAN DU TERRITOIREFORÊT / 01

ALERTE XANA · TOUR ACTIVÉE

On compte sur toi, Aelita.