Solución al error "unable to resolve dependency tree While resolving..."
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.