Guía de Node.js · 2 min de lectura

npm y yarn detrás de un proxy

Las redes corporativas rompen npm install de maneras predecibles. Aquí está cómo configurar npm y ambas versiones principales de yarn para instalar a través de un proxy HTTP — además de las variables de entorno que toda la cadena de herramientas de Node comparte.

npm, yarn y el proxy HTTP

Los gestores de paquetes descargan a través de HTTPS, por lo que necesitan un proxy HTTP CONNECT — que es exactamente el endpoint HTTP s4m en el puerto 3128. npm mantiene su propia configuración, por lo que establecer las variables de entorno del shell no siempre es suficiente; generalmente se configuran tanto proxy como https-proxy en la configuración de npm para que el tráfico del registro sea dirigido. Las dos generaciones de Yarn difieren: el yarn clásico v1 lee su propia configuración de proxy / https-proxy (y en gran medida respeta la de npm), mientras que Yarn Berry (v2+) utiliza las claves httpProxy y httpsProxy en .yarnrc.yml.

En todos ellos, también se respetan las variables de entorno estándar http_proxy, https_proxy y no_proxy, que es la forma más rápida de solucionar una instalación única de npm install en una máquina restringida. Con s4m te autenticas con USER:PASS contra proxy.s4m.online:3128. Consulta la página del proxy y la guía compartida de variables de entorno; la guía hermana de pip y conda cubre el equivalente en Python.

Configura npm, yarn v1 y Berry

Configuración persistente para cada herramienta más la opción de variable de entorno. Reemplaza USER:PASS antes de ejecutar.

bash
# --- npm: persistent config (writes to ~/.npmrc) ---
npm config set proxy       http://USER:PASS@proxy.s4m.online:3128
npm config set https-proxy http://USER:PASS@proxy.s4m.online:3128
npm config set noproxy     localhost,127.0.0.1,.internal
npm install
# To undo later:
# npm config delete proxy && npm config delete https-proxy

# --- yarn v1 (classic) ---
yarn config set proxy       http://USER:PASS@proxy.s4m.online:3128
yarn config set https-proxy http://USER:PASS@proxy.s4m.online:3128

# --- Yarn Berry (v2+): .yarnrc.yml ---
cat >> .yarnrc.yml <<'YML'
httpProxy: "http://USER:PASS@proxy.s4m.online:3128"
httpsProxy: "http://USER:PASS@proxy.s4m.online:3128"
YML

# --- Environment variables: quickest one-off fix ---
export https_proxy="http://USER:PASS@proxy.s4m.online:3128"
export http_proxy="http://USER:PASS@proxy.s4m.online:3128"
export no_proxy="localhost,127.0.0.1,.internal"
npm install

Arreglar npm install detrás de un proxy

El orden para probar cosas cuando las instalaciones están agotando el tiempo.

Confirma que es el proxy

Ejecuta npm install -ddd (o con --verbose) y busca ETIMEDOUT o ECONNREFUSED en el registro — eso apunta a una conexión saliente bloqueada que necesita un proxy.

Establecer proxy npm y https-proxy

Utilice npm config set para tanto proxy como https-proxy apuntando a http://USER:PASS@proxy.s4m.online:3128. El tráfico del registro es HTTPS, por lo que https-proxy es el que generalmente importa.

Ajusta tu versión de yarn

Para yarn v1 usa yarn config set; para Yarn Berry agrega httpProxy y httpsProxy a .yarnrc.yml. No mezcles los dos estilos de configuración.

Agregar noproxy para registros internos

Si también usas un registro privado en la LAN, agrega su host a noproxy / no_proxy para que se acceda directamente en lugar de a través del proxy externo.

Autenticación, registros privados y sorpresas

Dos cosas rompen las instalaciones incluso después de que se establece el proxy. Primero, caracteres especiales en la contraseña: si contiene @, : o #, codifícalos en URL (por ejemplo, @ se convierte en %40) o la configuración analiza la URL incorrectamente. Segundo, una mezcla de registros públicos y privados: coloca cualquier host de registro interno en noproxy para que se acceda directamente, mientras que el registro público de npm pasa a través del proxy.

El punto final HTTP de s4m es un proxy de centro de datos autenticado, con pago por uso — una opción limpia para los ejecutores de CI y las máquinas de desarrollo que deben acceder a npm desde detrás de una salida controlada. No es un proxy residencial y no es un caché de paquetes; para instalaciones fuera de línea utiliza un espejo de registro real. Cuando tu CI necesita una única IP de salida permitida, añade una IP personal dedicada. Un 407 significa credenciales incorrectas — consulta la guía 407. El mismo punto final alimenta pip/conda y Docker; valídalo con las herramientas.

FAQ

Preguntas, respondidas

¿Por qué npm install se queda colgado o se agota detrás de un proxy?

El registro se alcanza a través de HTTPS y tu conexión saliente está bloqueada. Establece el proxy de npm y https-proxy (y/o las variables de entorno http_proxy/https_proxy) para enrutar a través de http://USER:PASS@proxy.s4m.online:3128.

¿Cómo configuro Yarn Berry frente a yarn v1?

Yarn v1 utiliza yarn config set proxy / https-proxy. Yarn Berry (v2+) utiliza las claves httpProxy y httpsProxy en .yarnrc.yml. Usa un estilo por proyecto; no los mezcles.

Mi contraseña tiene caracteres especiales y el proxy falla, ¿por qué?

npm analiza el valor del proxy como una URL, por lo que caracteres como @, : o # en la contraseña deben estar codificados en URL (por ejemplo, @ se convierte en %40). Después de la codificación, las credenciales se analizan correctamente.

¿Cómo mantengo un registro interno fuera del proxy?

Agrega el nombre de host del registro interno a la lista de noproxy (npm) o no_proxy (env). Ese host se alcanza directamente mientras el tráfico del registro público sigue pasando por el proxy.

Desbloquea tus instalaciones de Node

Rutea npm y yarn a través del punto final HTTP autenticado en proxy.s4m.online:3128. Pago por uso, con una IP dedicada cuando CI necesita una salida permitida.

Las personas encontraron esta página buscando

Frases de búsqueda reales que esta página responde — los enlaces abren la página que las cubre en profundidad.