Solución al error "unable to resolve dependency tree While resolving..."

Author
By Darío Rivera
Posted on 2021-08-17 in Vue.js

Un error común cuando actualizas la versión de NPM o cuando descargas un proyecto que ha sido compilado con una versión anterior, suele ser que después de esto al intentar instalar las dependencias de un proyecto te encuentras con un error como el que muestro a continuación.

unable to resolve dependency tree

Este error puede tener una gran cantidad de variantes dependiendo del proyecto en el cual estés trabajando y los paquetes que estés instalando. En mi caso particular, me ha pasado con paquetes relacionados con eslint.

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: undefined@undefined
npm ERR! Found: eslint@7.32.0
npm ERR! node_modules/eslint
npm ERR!   dev eslint@"^7.32.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer eslint@">= 1.6.0 < 7.0.0" from @vue/cli-plugin-eslint@4.5.13
npm ERR! node_modules/@vue/cli-plugin-eslint
npm ERR!   dev @vue/cli-plugin-eslint@"^4.5.13" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR! 
npm ERR! See /Users/.../.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/.../.npm/_logs/2021-08-17T18_00_06_990Z-debug.log

Origen

La instalación automática de dependencias entre pares es una nueva característica introducida en npm 7. En versiones anteriores de npm (4-6), los conflictos de dependencias entre pares presentaban una advertencia de que las versiones no eran compatibles, pero que aún instalarían dependencias sin errores. NPM 7 ahora bloquea las instalaciones si existe un conflicto de dependencia ascendente que no se puede resolver automáticamente.

Solución

La solución más sencilla para esto es instalar con el comportamiento anterior de dependencias.

npm install --legacy-peer-deps

Esto hará que puedas correr npm install sin ningún problema. Sin embargo, otros comandos podrían desencadenar en el mismo error como es el caso de npm audit fix. Para esto debes agregar --legacy-peer-deps junto a la ejecución de dicho comando.

npm audit fix --legacy-peer-deps

La otra alternativa es agregar la opción --force para obligar a npm la instalación de los paquetes necesarios.


Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.