'npm install' extremadamente lento en Windows

82

Para mí es npm installextremadamente lento. Estoy usando Windows 8.1 con la última versión de npm. Mi velocidad de conexión es de alrededor de 100 Mbit / s.

El proyecto que estoy intentando instalar tiene alrededor de 20 paquetes / dependencias y se necesitan alrededor de 30 minutos para instalar todas las dependencias ...

¿Alguien tiene una pista?

Simon Knittel
fuente
2
Hoy también tengo este problema. Caja de Windows 8.1 razonablemente recién construida, instalé node.js y npm hoy. npm install se está ejecutando muy lento al intentar instalar bower. npm v2.7.4 nodejs v0.12.2
Stuntbeaver
@Simon Knittel ¿Lo has resuelto?
Tomasz Waszczyk
@PantaRhei No sé si es la solución, pero para mí marcó la diferencia si instalo los módulos en una unidad USB3 o en un disco duro interno.
Simon Knittel
@simon puede ser la conexión de firewall que bloquea otra forma poner a actualizar nodejs y NPM
Seif Tamallah
@Pnta puede intentar actualizar Nodejs y npm y deshabilitar el firewall
Seif Tamallah

Respuestas:

34

Me encontré con el mismo problema, usando --verbosecomo Peterh mencionó me mostró la fuente del problema: estoy detrás de un proxy, que usa sus propios certificados para conexiones https. Según el usuario "Mletter1" en https://github.com/npm/npm/issues/8872, el problema se resuelve fácilmente usando http:

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

Y voilà, es rápido de nuevo. Por supuesto, solo debe hacer esto, si está de acuerdo con la información npm de texto sin formato en la red ;-)

Christof Kälin
fuente
Me encontré con esto al usar Windows WSL contra un VirtualBox Docker (Toolbox). NPM lento como el barro, redirigir mi WSL (debian) a http npmjs.org aceleró significativamente las cosas.
profundización
Para agregar otro enlace útil, parece que el uso de WSL NPM también se ve afectado por Windows Defender. gist.github.com/noelbundick/9c804a710eb76e1d6a234b14abf42a52
deepelement
4
¿Pero no es eso inseguro? Te expone los ataques MIM
GiriB
17

Descargo de responsabilidad. Preocupaciones con respecto a la seguridad: ojalá sepa lo que descarga en su carpeta node_modules, ¿verdad?

Desde la eternidad → hasta 5 segundos construye :

  • buscar la configuración de Windows Defender
  • → Protección contra virus y amenazas
  • → Configuración de protección contra virus y amenazas
  • → Exclusiones

aquí agregue estas dos rutas a su lista de carpetas de protección en tiempo real excluidas :

C:\Program Files\nodejs
C:\Users\<your username>\AppData\Roaming\npm

PD : reemplace el nombre de la carpeta de usuario<your username> correspondiente . Si se pregunta por qué no puede encontrar la carpeta AppData en el Explorador, asegúrese de marcar las opciones Ver para carpetas ocultas.

Roko C. Buljan
fuente
1
Funciona muy bien para mí, también debería agregarlo en la carpeta del área de trabajo, donde tiene carpetas locales node_modules para proyectos.
Xun Yang
@Chet, avíseme cuando haga que funcione lo que hizo
Roko C. Buljan
Entré en el defensor y desactivé toda la protección contra virus y amenazas, toda la protección de red y firewall, desactivé "comprobar aplicaciones y archivos". También agregué algunas configuraciones de npm para cambiar el progreso y configuré la URL del registro en http en lugar de https. Es un poco más rápido ahora.
Chet
4
@Chet yap, las infecciones de virus deberían ir más rápido ahora 🙈
Roko C. Buljan
1
¡Ese es el plan! 🤞
Chet
11

Me he enfrentado al mismo problema durante un tiempo. Estaba probando lo siguiente

npm i typescript live-server --save-dev

La instalación se atascaría para siempre. Sin embargo, agregar la bandera -verbose funcionó bien.

Nikhil Dev
fuente
2
Pero, ¿por qué -verbosemarca la diferencia?
Itamar Bitton
9

Sé que es solo una solución alternativa , pero intente usar el " Windows PowerShell " integrado

MartinDoes
fuente
¡Funcionó bien! Gracias.
FRNathan13
8
@MartinDoes ¿Por qué PowerShell es más rápido?
Witold Kaczurba
1
El mismo rendimiento exacto entre cmd.exey PowerShell para mí.
Tom Granot
4

Parece que npm no maneja bien las conexiones a Internet y, a veces, puede terminar en tal situación.

1) Le aconsejaré que compruebe si su firewall o antivirus no está realizando ningún análisis o filtrado que pueda ralentizar la instalación de npm.

2) También puede usar el almacenamiento en caché de npm como se muestra a continuación.

npm install package-name --cache "c:\path\to\use\as\dependencies\cache"

esto permitirá la descarga de npm y las dependencias de caché en el directorio que especificó.

3) otra solución para almacenar en caché las dependencias de los paquetes npm es npm lazy , puede encontrar más información sobre esto en el sitio web npm Lazy

Nota: el proceso de almacenamiento en caché puede mejorar o no la velocidad de descarga, pero probablemente ahorrará tiempo de descarga al instalar o actualizar sus paquetes npm.

Williem
fuente
3

Desactivar el Firewall de Windows y la protección en tiempo real de Windows Defender lo hizo por mí en Windows 10.

Miguel
fuente
2

Para mí, parecía ser un problema con IPv6.

Deshabilitar IPv6 me ayudó enormemente.
Con IPv6 activado, "paquete de actualización newtonsoft.json" tardó 1:45 en terminar con el error "paquete de actualización: una tarea cancelada".

Con IPv6 deshabilitado, el "paquete de actualización newtonsoft.json" se completó en 10 segundos

Benjamín Casha
fuente
La desactivación de IPv6 me ayudó con un problema similar en Fedora 23
malloc4k
1

Enfrenté el mismo problema mientras creaba un proyecto mientras usaba angular cli "ng new PROJECT_NAME" este comando activa "npm -install" después de la creación del proyecto, que tardó demasiado en instalarse, y se atascó en "Instalar paquetes para herramientas a través de npm". Siga estos que funcionaron para mí

1) Verifique su versión npm "npm --version" (debe ser superior a 2.1.8) Actualice su paquete npm con "npm -g install --save latest-version"

2) Elimina la barra de progreso que consume más tiempo "npm set progress = false"

verifique estos problemas si aún no soluciona su problema https://github.com/nodejs/node/issues/4150 https://github.com/npm/npm/issues/11283

Con suerte, esto soluciona el problema ¡Saludos!

Pionero
fuente
1

Apagar el Firewall de Windows Defender me ayudó.

Debido a que simplemente no se siente bien, primero agregué el WIFI a una red privada (a través de la configuración de WIFI) y solo apagué Windows Defender para una red privada en lugar de todas las redes públicas.

El siguiente paso debería ser: qué tráfico de red causa esto y cómo agregarlo a la regla de excepción de Windows Defender :)

10Campeón
fuente
0

Probé todas las configuraciones (proxy, registro, etc.), nada funcionó para mí, así que hice una desinstalación e instalación completa de node & npm. Lo que ayudó a resolver el problema.

Prasanth Jaya
fuente
0

Desactivar completamente la protección contra virus y firewall no es la opción más segura. Aunque acelera las cosas, te deja más vulnerable.

En mi caso, solo excluí el proceso node.exe en la protección contra virus y amenazas.

  • En su menú de inicio, escriba "seguridad de Windows" y abra la aplicación.
  • Haga clic en "Protección contra virus y amenazas"
  • Configuración de protección contra virus y amenazas => Administrar configuración
  • Exclusiones => Agregar o eliminar exclusiones
  • Agregue una exclusión => proceso => ​​escriba node.exe => haga clic en Agregar

Solo una simple aplicación create-react-app bajó de 2m40s a 1m10s. Los comandos npm también son ejecutados por node.exe, por lo que se notan las mismas mejoras allí.

Birgert
fuente
0

Asegúrese de que realmente está utilizando una versión reciente de npm. En mi caso, C:\Program Files\nodejs\npm.cmdhabía estado usando una carpeta anterior npm-cli.jsdebajo de la predeterminada en lugar de una más nueva debajoprefix%appdata%\npmnpm-cli.jsC:\Program Files\nodejs .

Establecer la variable de entorno npm_config_prefix para C:\Program Files\nodejsresolver eso. (Antes de encontrar esa solución, intenté usar el --prefix argumento y descubrí de la manera más difícil que " obliga a que los comandos no globales se ejecuten en la carpeta especificada " ).

Encontré un gran aumento en el rendimiento al pasar de 3.10.9 a 6.13.4, lo suficiente para que los npm installtiempos sean aceptables a pesar de la interferencia del antivirus.

presa
fuente
0

Pasé por una madriguera tratando de identificar el problema. Si npm install sigue sufriendo un cuello de botella, debería considerar modificar las propiedades de su ethernet virtual y deshabilitar todos los elementos de descarga .

No tuve proxies o problemas de almacenamiento en caché con npm.

Vea aquí el tutorial sobre cómo llegar al menú y deshabilitar la configuración de descarga. Asegúrese de hacer esto tanto para su ethernet como para VEthernet y debería notar inmediatamente una diferencia. Pasé de una resolución de suspensión de 10 minutos que a veces simplemente se detenía a instalaciones de 10 segundos. https://www.dincloud.com/blog/tuning-windows-get-15x-speeds-on-large-file-copies-today

fengelhardt
fuente