Observa que ambos paquetes tienen la peer dependency npm utensils. Pero la versión que necesitan es diferente. Para npm burger, se indica cuidado en 1.0.0, lo que significa que solo puede aceptar cualquier cosa que sea mayor o igual a 1.0.0, y menor que 2.0.0. Ahora para npm fries, acepta cualquier cosa que sea mayor o igual a 2.0.0, pero menor que 3.0.0. Esto es como si el burger quisiera este plato blanco y las fries quisieran este cubo. Anteriormente, cuando instalamos npm burger en npm restaurant, ya teníamos npm utensils 1.0.0, el plato blanco, instalado. Debido a que esta es una peer dependency, solo podemos tener una versión del paquete instalada. Cuando intentamos instalar npm fries, la peer dependency npm utensils 2.0.0 para fries en el paquete npm restaurant, vemos un conflicto. Y es por eso que verías este error en tu línea de comandos, que dice no se puede resolver la dependencia, conflicto de peer dependency.
Entonces, si esto sucede, ¿qué puedes hacer? Para solucionar este problema de peer dependency, en general, querrás buscar una versión compatible. Eso podría significar buscar una versión más alta, más baja de npm burger, npm fries, o buscar una versión que acepte la misma versión de npm utensils. Podrías necesitar actualizar la dependencia de una dependencia, o incluso implementar overrides en package.json. La razón por la que no puedo darte una solución específica ahora mismo es porque este problema de peer dependency puede ocurrir en diferentes niveles en tu package.json. Así que realmente, dependiendo de la situación, necesitamos usar diferentes herramientas para solucionarlo.
Volviendo a este paso 3, construir el árbol IDEA, una cosa más que quería resaltar sobre este paso es que tu archivo package.json no solo existe en tu aplicación anfitriona. En realidad, existe en cada paquete que tienes que instalas. Así que cuando el CLI está tratando de construir el árbol IDEA, no solo está mirando el package.json de tu aplicación anfitriona. También está mirando cada package.json de los paquetes que estás instalando. Digamos que el árbol ha terminado de construirse, entonces el CLI procederá a comparar las diferencias del árbol y resolver cualquier conflicto. Tomará decisiones sobre lo que se necesita hacer a continuación, podría ser agregar, eliminar, cambiar, o simplemente no hacer nada. Luego el CLI procederá a descargar los paquetes necesarios del registro o desde la caché si está disponible. Este es un paso donde pueden ocurrir errores. Uno de ellos podría ser que apuntaste a un registro incorrecto, y por lo tanto obtienes un error. O podrías estar intentando instalar un paquete privado, pero no tienes autorización para hacerlo. Así que también obtienes un error. Después de que los paquetes sean descargados por el CLI a una ubicación temporal en una instancia, luego necesitan ser movidos a tus node modules. Si tu proyecto tiene scripts de ciclo de vida en él, esos scripts también se ejecutarán en consecuencia si les permites hacerlo. Y por scripts de ciclo de vida, me refiero a scripts como pre-install o post-install. Después de eso, tu archivo de registro se actualizará para capturar todos los cambios que han ocurrido.
Comments