¿Por qué la instalación npm dice que tengo dependencias no satisfechas?

Tengo un paquete de Node. Cuando ejecuto npm install desde la raíz del paquete, instala un montón de cosas, pero luego imprime varios mensajes de error que se parecen a esto:

npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob requires graceful-fs@'~1.2.0' but will load

Debo estar confundido sobre lo que hace exactamente npm install. Si detecta una dependencia, ¿no debería instalarla? ¿Bajo qué condiciones me da mensajes de error como este, y cómo puedo resolver las dependencias?

Solución

Creo que es porque la resolución de la dependencia está un poco rota, ver https://github.com/npm/npm/issues/1341#issuecomment-20634338

Las siguientes son las posibles soluciones:

  1. Necesitas instalar manualmente los módulos de nivel superior, que contienen dependencias no satisfechas: npm install findup-sync@0.1.2

  2. Reestructure su package.json. Coloca todos los módulos de alto nivel (que sirven como dependencia para otros módulos) en la parte inferior.

  3. Vuelva a ejecutar el comando npm install.

El problema puede deberse a que npm's no ha podido descargar todos los paquetes debido a que se ha agotado el tiempo de espera o a alguna otra cosa.

Nota: También puede instalar los paquetes fallidos manualmente usando npm install findup-sync@0.1.2.

Antes de ejecutar npm install, realizar los siguientes pasos puede ayudar:

  • eliminar node_modules usando rm -rf node_modules/
  • ejecutar npm cache clean.

¿Por qué 'eliminar node_modules' a veces es necesario? Cuando un módulo anidado no se instala durante npm install, la posterior npm install no detectará las dependencias anidadas que faltan.

Si ese es el caso, a veces es suficiente con eliminar la dependencia de nivel superior de esos módulos anidados que faltan, y ejecutar de nuevo npm install. Véase

Comentarios (12)

Me pasó cuando el WIFI se cayó durante una instalación npm. Quitando node_modules y volviendo a ejecutar npm install se arregló.

Comentarios (7)

Las respuestas anteriores no me ayudaron del todo incluso después de eliminar el directorio node_modules.

El siguiente comando me ayudó finalmente:

npm config set registry http://registry.npmjs.org/

Tenga en cuenta que esto extrae los módulos del nodo a través de una conexión HTTP insegura.

Src: https://stackoverflow.com/a/13119867/4082503

Comentarios (3)