¿Hay alguna manera de hacer que npm install (el comando) funcione detrás del proxy?

Lea sobre una variable proxy en un archivo .npmrc pero no funciona. Intentando evitar la descarga manual de todos los paquetes requeridos y la instalación.

Resolví este problema de esta manera:

  1. Ejecuto este comando:

     npm config set strict-ssl false 
  2. Luego configure npm para que se ejecute con http, en lugar de https:

     npm config set registry "http://registry.npmjs.org/" 
  3. Luego instalo paquetes usando esta syntax:

     npm --proxy http://username:password@cacheaddress.com.br:80 \ install packagename 

Omita el username:password parte de username:password si el proxy no requiere que se autentique

EDITAR: Un amigo mío acaba de señalar que puede hacer que NPM trabaje detrás de un proxy estableciendo AMBAS variables de entorno HTTP_PROXY y HTTPS_PROXY, emitiendo normalmente el comando npm install express (por ejemplo)

EDIT2: como @BStruthers comentó, tenga en cuenta que las contraseñas que contienen “@” no se analizarán correctamente

Configuración del proxy npm

Para HTTP :

 npm config set proxy http://proxy_host:port 

Para HTTPS :

 npm config set https-proxy http://proxy.company.com:8080 

Nota : https-proxy no tiene https como protocolo, sino http .

En caso de duda, pruebe todos estos comandos, como hago yo:

 npm config set registry http://registry.npmjs.org/ npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set strict-ssl false set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080 npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \ --without-ssl --insecure -g install 

=======

ACTUALIZAR

Ponga su configuración en ~/.bashrc o ~/.bash_profile para que no tenga que preocuparse por su configuración cada vez que abra una nueva ventana de terminal.

Si su empresa es como la mía, tengo que cambiar mi contraseña con bastante frecuencia. Así que agregué lo siguiente en mi ~ / .bashrc o ~ / .bash_profile para que cada vez que abra un terminal, ¡sé que mi npm está actualizada!

  1. Simplemente pegue el siguiente código en la parte inferior de su archivo ~/.bashrc :

     ###################### # User Variables (Edit These!) ###################### username="myusername" password="mypassword" proxy="mycompany:8080" ###################### # Environement Variables # (npm does use these variables, and they are vital to lots of applications) ###################### export HTTPS_PROXY="http://$username:$password@$proxy" export HTTP_PROXY="http://$username:$password@$proxy" export http_proxy="http://$username:$password@$proxy" export https_proxy="http://$username:$password@$proxy" export all_proxy="http://$username:$password@$proxy" export ftp_proxy="http://$username:$password@$proxy" export dns_proxy="http://$username:$password@$proxy" export rsync_proxy="http://$username:$password@$proxy" export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16" ###################### # npm Settings ###################### npm config set registry http://registry.npmjs.org/ npm config set proxy "http://$username:$password@$proxy" npm config set https-proxy "http://$username:$password@$proxy" npm config set strict-ssl false echo "registry=http://registry.npmjs.org/" > ~/.npmrc echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "strict-ssl=false" >> ~/.npmrc echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc ###################### # WGET SETTINGS # (Bonus Settings! Not required for npm to work, but needed for lots of other programs) ###################### echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc echo "use_proxy = on" >> ~/.wgetrc ###################### # CURL SETTINGS # (Bonus Settings! Not required for npm to work, but needed for lots of other programs) ###################### echo "proxy=http://$username:$password@$proxy" > ~/.curlrc 
  2. Luego edite los campos “nombre de usuario”, “contraseña” y “proxy” en el código que pegó.

  3. Abre una nueva terminal

  4. Compruebe su configuración ejecutando npm config list y cat ~/.npmrc

  5. Intenta instalar tu módulo usando

    • npm install __ , o
    • npm --without-ssl --insecure install __ , o
    • anula tu configuración de proxy usando npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __ .
    • Si desea que el módulo esté disponible globalmente, agregue la opción -g

¿Has probado las opciones de línea de comandos en lugar del archivo .npmrc ?

Creo que algo como npm --proxy http://proxy-server:8080/ install {package-name} funcionó para mí.

También he visto lo siguiente: npm config set proxy http://proxy-server:8080/

Aunque ya hay muchos consejos útiles, para mi entorno (Windows 7, que usa PowerShell) y la última versión disponible de node.js (v8.1.2), todo lo anterior no funcionó, excepto cuando seguí la configuración de brunowego .

Por lo tanto, verifique su configuración con:

 npm config list 

Configuración detrás de un proxy:

 npm config set registry http://registry.npmjs.org/ npm config set http-proxy http://username:password@ip:port npm config set https-proxy http://username:password@ip:port npm config set proxy http://username:password@ip:port npm set strict-ssl false 

Espero que esto le ahorre tiempo a alguien

Para configurar el proxy http, tiene el indicador -g establecido:

sudo npm config set proxy http://proxy_host:port -g

Para el proxy https, nuevamente asegúrate de que el indicador -g esté configurado:

sudo npm config set https-proxy http://proxy_host:port -g

Esto funciona para mí en Windows:

 npm config set proxy http://domain%5Cuser:pass@host:port 

Si no está en ningún dominio, use:

 npm config set proxy http://user:pass@host:port 

Si su contraseña contiene caracteres especiales como " , @ : y así sucesivamente, reemplácelos por sus valores URL codificados. Por ejemplo " -> %22 , @ -> %40 : -> %3A . %5C se usa para el personaje \ .

 $ npm config set proxy http://login:pass@host:port $ npm config set https-proxy http://login:pass@host:port 

Aunque configuré proxy con config, el problema no se resolvió, pero después de que This work funcionó para mí:

npm –https-proxy http://XX.AA.AA.BB:8080 instalar cordova-plugins

npm –proxy http://XX.AA.AA.BB:8080 instalar

Probé todas estas opciones, pero mi proxy no estaba teniendo nada de eso por alguna razón. Entonces, nacido de la desesperación / desesperación, intenté al azar curl en mi shell Git Bash, y funcionó.

Deshacer todas las opciones de proxy usando

 npm config rm proxy npm config rm https-proxy 

Y luego, ejecutar la npm install en mi shell de Git Bash funcionó perfectamente. No sé cómo está configurado correctamente para el proxy y el indicador de cmd Windows no, pero funcionó.

Esto funcionó para mí-

 npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080 npm set strict-ssl=false 

vim ~/.npmrc en su máquina Linux y agregue lo siguiente. No se olvide de agregar una parte del registry ya que esto causa fallas en muchos casos.

 proxy=http://: https-proxy=https://: registry=http://registry.npmjs.org/ 

Esto funcionó para mí. Establezca el proxy http y https.

Intenta encontrar .npmrc en C: \ Users \ .npmrc

luego abre (bloc de notas), escribe y guarda adentro:

 proxy=http://:@: 

PD: eliminar “< " y ">” por favor !!

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

Esto resolvió mi problema.

Use el comando a continuación en cmd o GIT Bash u otra solicitud

$ npm configura set proxy ” http://192.168.1.101:4128

$ npm config configura https-proxy ” http://192.168.1.101:4128

donde 192.168.1.101 es proxy ip y 4128 es puerto. cambiar de acuerdo a su configuración de proxy. funciona para mi

Para mí, a pesar de que Python, etc. funcionarán, aunque nuestro proxy corporativo npm no funcionaría.

Lo intenté

npm config set proxy http://proxyccc.xxx.ca:8080 npm config set https-proxy https://proxyccc.xxx.ca:8080 npm config set registry http://registry.npmjs.org/

como se le indicó, pero siguió recibiendo el mismo error.

Fue solo cuando eliminé https-proxy https://proxyccc.xxx.ca:8080 del archivo .npmrc que npm instaló el electrón –save-dev funcionó

En el sistema de Windows

Intente eliminar la configuración del proxy y del registro (si ya está configurada) y configure las variables de entorno en la línea de comandos a través de

 SET HTTP_PROXY=http://username:password@domain:port SET HTTPS_PROXY=http://username:password@domain:port 

luego intente ejecutar la instalación npm. Con esto, no establecerás el proxy en .npmrc, pero para esa sesión funcionará.

Después de vincular diferentes respuestas finalmente, las primeras cuatro líneas de las respuestas de @Kayvar me ayudan a resolver el problema:

 npm config set registry http://registry.npmjs.org/ npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set strict-ssl false 

Muchas aplicaciones (por ejemplo, npm) pueden usar la configuración de proxy de las variables de entorno del usuario.

Solo puede agregar a su entorno las siguientes variables HTTP_PROXY y HTTPS_PROXY que tendrán el mismo valor para cada una

http: // usuario: contraseña @ proxyAddress: proxyPort

Por ejemplo, si tiene Windows, puede agregar un proxy de la siguiente manera:

Cómo se ve en Windows

En mi caso, olvidé configurar el “http: //” en mis archivos de configuración (se pueden encontrar en C: \ Users \ [USERNAME] \ .npmrc) direcciones de proxy. Entonces, en lugar de tener

 proxy=http://[IPADDRESS]:[PORTNUMBER] https-proxy=http://[IPADDRESS]:[PORTNUMBER] 

tuve

 proxy=[IPADDRESS]:[PORTNUMBER] https-proxy=[IPADDRESS]:[PORTNUMBER] 

Lo cual, por supuesto, no funcionó, pero los mensajes de error tampoco ayudaron mucho …

Ha habido muchas respuestas arriba para esta pregunta, pero ninguna de esas me funcionó. Todos ellos mencionaron agregar el prefijo http:// . Así que lo agregué también. Todo falló

Finalmente funciona después de eliminar accidentalmente el prefijo http:// . La configuración final es así:

 npm config set registry http://registry.npmjs.org/ npm config set http-proxy ip:port npm config set https-proxy ip:port npm config set proxy ip:port npm set strict-ssl false 

No sé la lógica detrás de esto, pero funcionó. Si ninguna de las respuestas anteriores funciona para usted, tal vez pueda intentarlo de esta manera. Espero que este sea útil.

cuando doy sin http / http prefix en la configuración del proxy npm falló incluso cuando el servidor proxy y el puerto eran valores correctos. Funcionó solo después de agregar el prefijo de protocolo.

Mi problema se redujo a un error tonto de mi parte. Como un día había soltado mis servidores proxy en un archivo * .bat de Windows (http_proxy, https_proxy y ftp_proxy), olvidé escapar de los caracteres especiales para el dominio \ dominio url codificado (% 5C) y la contraseña con el signo de interrogación ‘?’ (% 3F). Es decir, una vez que tenga el comando codificado, no olvide escapar del comando ‘%’ en el archivo bat.

Cambié

 set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080 

a

 set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080 

Tal vez sea un caso extremo, pero ojalá ayude a alguien.

Hay buena información en la página de curl sobre SSL y problemas con los certificados . Baso la mayor parte de mi respuesta en la información allí.

Usar strict-ssl false es una mala práctica y puede crear problemas. Lo que podemos hacer en su lugar es agregar el certificado que se está inyectando, mediante el certificado “man in the middle”.

Cómo resolver esto en Windows:

  1. Descargue los certificados de CA de la curva basada en el paquete CA de Mozilla. También puede usar el shellscript “firefox-db2pem.sh” de curl para convertir su base de datos local de Firefox.
  2. Vaya a una página web usando https, por ejemplo Stackoverflow en Chrome o Internet Explorer
  3. Haga clic en el ícono de candado, haga clic en Ver certificados o “Válido” en Chrome
  4. Navegue a la ruta de certificación. El certificado superior o el certificado raíz es el que queremos extraer. Haga clic en ese certificado y luego “ver certificado”
  5. Haga clic en la segunda pestaña, “Detalles”. Haga clic en “Copiar a archivo”. Elija el formato DER y anote dónde guarda el archivo. Elija un nombre de archivo adecuado, como rootcert.cer
  6. Si tiene instalado Git, tendrá openssl.exe. De lo contrario, instale git para Windows en esta etapa. Lo más probable es que el archivo ejecutable de openssl esté en C: \ Archivos de progtwig \ git \ usr \ bin \ openssl.exe. Utilizaremos openssl para convertir el archivo al formato PEM que necesitamos para que NPM lo entienda.
  7. Convierta el archivo que guardó en el paso 5 usando este comando:
    openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
    donde rootcert es el nombre de archivo del certificado que guardó en el paso 5.
  8. Abra el outcert.pem en un editor de texto lo suficientemente inteligente como para entender los finales de línea, por lo que no es bloc de notas. Seleccione todo el texto y cópielo en el portapapeles.
  9. Ahora pegaremos ese contenido hasta el final del paquete CA Cert realizado en el paso 1. Abra el cacert.pem en su texto avanzado. Vaya al final del archivo y pegue el contenido del paso anterior hasta el final del archivo. (Conserva la línea vacía debajo de lo que acabas de pegar)
  10. Copie el cabundle.pem guardado en un lugar adecuado. Por ejemplo, su% userprofile% o ~. Tome nota de la ubicación del archivo.
  11. Ahora le diremos a npm / hilo para usar el nuevo paquete. En una línea de comando, escriba
    npm config set cafile **C:\Users\username\cacert.pem
    donde C: \ Users \ username \ cacert.pem es la ruta del paso 10.
  12. Opcionalmente: active strict-ssl nuevamente, npm config set strict-ssl true

¡Uf! ¡Lo hicimos! Ahora npm puede entender cómo conectarse. La ventaja es que puedes decirle a curl que use el mismo cabundle.pem y también comprenderá los HTTP.