Solucionar el conflicto de dependencia ascendente al instalar paquetes NPM

Resuelto connorcode asked hace 4 años • 16 respuestas

Estoy intentando instalar npm vue-mapbox mapbox-gl y aparece un error de árbol de dependencia.

Estoy ejecutando Nuxt.js SSR con Vuetify y no instalé nada relacionado con Mapbox antes de ejecutar esta instalación y recibo este error.

38 error code ERESOLVE
39 error ERESOLVE unable to resolve dependency tree
40 error
41 error While resolving: "example"@"1.0.0"
41 error Found: mapbox-gl@"1.13.0"
41 error node_modules/mapbox-gl
41 error   mapbox-gl@"^1.13.0" from the root project
41 error
41 error Could not resolve dependency:
41 error peer mapbox-gl@"^0.53.0" from vue-mapbox@"0.4.1"
41 error node_modules/vue-mapbox
41 error   vue-mapbox@"*" from the root project
41 error
41 error Fix the upstream dependency conflict, or retry
41 error this command with --force, or --legacy-peer-deps
41 error to accept an incorrect (and potentially broken) dependency resolution.
41 error
41 error See /Users/user/.npm/eresolve-report.txt for a full report.
42 verbose exit 1

¿Cuál es la forma correcta de solucionar este conflicto de dependencia ascendente?

connorcode avatar Nov 21 '20 02:11 connorcode
Aceptado

Parece que es un problema con las dependencias entre pares en la última versión de npm (v7), que todavía es una versión beta.

Prueba con npm install --legacy-peer-deps. Para obtener información detallada, consulte la publicación del blog Serie npm v7 - ¡Lanzamiento Beta! Y: SemVer: cambios importantes en npm v7 .

Sultan Maulana avatar Nov 24 '2020 13:11 Sultan Maulana

Explicación del problema:

Su dependencia mexamplerequiere mmapbox-glv1.13.0 y mvue-mapboxrequiere mmapbox-glv0.53.0.

NPM no sabe qué versión instalar, por lo que muestra una advertencia. Puede evitar los errores utilizando -- forceo --legacy-peer-deps, pero ignorará un error y obtendrá resultados inesperados.

Corrija el error (mejores prácticas de producción):

  1. Probablemente uno de sus paquetes esté desactualizado. Actualizar paquetes y corregir errores de actualización puede solucionar el conflicto de dependencia.

  2. Anular una dependencia manualmente para evitar advertencias y errores. Está configurando la versión en una específica que sabe que funciona. Generalmente la versión más nueva.

Solución de ejemplo con anulación. Su archivo package.json se verá así:

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "mexample": "^1.2.0",
    "vue-mapbox": "*"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "overrides": {
    "mmapbox-gl": "1.13.0"
  }
}

Omita el error (solución rápida y sucia):

  1. --legacy-peer-depsignora por completo todas las peerDependencies usando la versión más reciente sin fijar el archivo package-lock.json
  2. --forcefuerza el uso de la más nueva, fijando todas las versiones en package-lock.json

Extra: no deberías usar "*" como versión, ya que podría actualizar dependencias importantes y romperlas.

Gustavo Garcia avatar Jul 04 '2022 23:07 Gustavo Garcia

Usar --legacy-peer-depsdespués npm install. Por ejemplo, si desea instalar Radium , utilice:

npm install --legacy-peer-deps --save radium
Shivam Yadav avatar Nov 30 '2020 10:11 Shivam Yadav

Hay dos maneras:

  1. Úselo npm install --legacy-peer-depspara instalar, y si esto no funciona, use

  2. El método de la fuerza. Agregue --force junto a npm install :npm install --force

hatake kakashi avatar Apr 06 '2021 06:04 hatake kakashi

Puedes seguir estos comandos.

Primer tipo:

npm config set legacy-peer-deps true

Luego escribe:

npx create-react-app my-app
Md Sajedul Islam avatar Apr 12 '2022 08:04 Md Sajedul Islam