¿Por qué npm install dice que tengo dependencias no satisfechas?
Tengo un paquete de nodos. 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 ven así:
npm WARN dependencia no satisfecha /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob requiere Graceful-fs@'~1.2.0' pero se cargará
Debo estar confundido acerca de qué npm install
hace exactamente. Si detecta una dependencia, ¿no debería instalarla? ¿En qué condiciones me da mensajes de error como este y cómo puedo resolver las dependencias?
Creo que se debe a que la resolución de dependencia está un poco rota, consulte https://github.com/npm/npm/issues/1341#issuecomment-20634338
A continuación se muestra la posible solución:
Es necesario instalar manualmente los módulos de nivel superior que contienen dependencias no satisfechas:
npm install [email protected]
Reestructura tu paquete.json. Coloque todos los módulos de alto nivel (sirve como dependencia para otros módulos) en la parte inferior.
Vuelva a ejecutar el
npm install
comando.
El problema podría deberse a que npm no pudo descargar todo el paquete debido a un tiempo de espera agotado o algo más.
Nota: También puede instalar los paquetes fallidos manualmente usando npm install [email protected]
.
Antes de ejecutar npm install
, realizar los siguientes pasos puede resultar útil:
- eliminar node_modules usando
rm -rf node_modules/
- correr
npm cache clean
¿Por qué a veces es necesario 'eliminar node_modules'? Cuando un módulo anidado no se instala durante npm install
, subsiguiente npm install
no detectará las dependencias anidadas que faltan.
Si ese es el caso, a veces es suficiente eliminar la dependencia de nivel superior de los módulos anidados que faltan y npm install
volver a ejecutarlos. Ver
Me pasó cuando se cortó el WIFI durante un npm install
. Quitarlo node_modules
y volver a ejecutarlo npm install
lo solucionó.
Solucioné el problema usando estas líneas de comando
$ rm -rf node_modules/
$ sudo npm update -g npm
$ npm install
¡Está hecho!
Actualizar NPM a la última versión puede ser de gran ayuda con esto. La respuesta anterior de dule es correcta al decir que la gestión de dependencias está un poco defectuosa, pero parece que esto es principalmente para versiones anteriores de npm.
El comando npm list
le proporciona una lista de todos los archivos instalados node_modules
. Cuando actualicé de la versión 1.4.2 a la versión 2.7.4, muchos módulos que anteriormente estaban marcados WARN unmet dependency
ya no aparecían como tales.
Para actualizar npm, debe escribir npm install -g npm
en MacOSX o Linux. En Windows, descubrí que volver a descargar y ejecutar el instalador de nodejs era una forma más efectiva de actualizar npm.