在代理后使用 npm 和 yarn
企业网络以可预测的方式破坏npm install。以下是如何配置npm和两个主要的yarn版本通过HTTP代理安装——以及整个Node工具链共享的环境变量。
npm、yarn 和 HTTP 代理
包管理器通过 HTTPS 下载,因此它们需要一个 HTTP CONNECT 代理——这正是 s4m 在 3128 端口上的 HTTP 端点。npm 保持自己的配置,因此仅设置 shell 的环境变量并不总是足够;通常需要在 npm 配置中同时设置 proxy 和 https-proxy,以便路由注册表流量。Yarn 的两个版本有所不同:经典的 yarn v1 读取自己的 proxy / https-proxy 设置(并在很大程度上遵循 npm 的设置),而 Yarn Berry (v2+) 使用 httpProxy 和 httpsProxy 键在 .yarnrc.yml 中。
在所有这些中,标准的 http_proxy、https_proxy 和 no_proxy 环境变量也会被尊重,这是一种在受限机器上快速修复一次性 npm install 的方法。使用 s4m,您可以通过 USER:PASS 对 proxy.s4m.online:3128 进行身份验证。请参阅 代理页面 和共享的 环境变量指南;兄弟 pip 和 conda 指南 涵盖 Python 的等效内容。
配置npm、yarn v1和Berry
每个工具的持久配置加上环境变量回退。运行之前替换USER:PASS。
# --- 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
在代理后修复 npm install
安装超时时尝试的顺序。
确认它是代理
运行 npm install -ddd(或使用 --verbose)并查找 ETIMEDOUT 或 ECONNREFUSED 到注册表——这指向需要代理的被阻止的出站连接。
设置 npm 代理和 https-proxy
使用npm config set为代理和https-proxy指向http://USER:PASS@proxy.s4m.online:3128.,注册表流量是HTTPS,因此https-proxy通常是重要的。
匹配您的纱线版本
对于yarn v1,使用yarn config set;对于Yarn Berry,将httpProxy和httpsProxy添加到.yarnrc.yml中。不要混合这两种配置风格。
为内部注册表添加不代理
如果您还在局域网中使用私有注册表,请将其主机添加到 noproxy / no_proxy,以便直接访问,而不是通过外部代理。
身份验证、私有注册表和注意事项
两个因素会导致安装失败,即使代理已设置。首先,密码中的特殊字符:如果它包含@、:或#,请对其进行URL编码(例如,@变为%40),否则配置将错误解析URL。其次,混合使用公共和私有注册表:将任何内部注册表主机放入noproxy中,以便直接访问,而公共npm注册表则通过代理访问。
s4m的HTTP端点是一个经过身份验证的数据中心代理,按需计费——非常适合必须从受控出口后面访问npm的CI运行器和开发者机器。它不是住宅代理,也不是包缓存;对于离线安装,请使用真实的注册表镜像。当您的CI需要一个单一的白名单出口IP时,请添加一个专用个人IP。407表示凭据错误——请参阅407指南。同一端点支持pip/conda和Docker;请使用工具进行验证。
问题,已解答
为什么 npm install 在代理后挂起或超时?
注册表通过 HTTPS 访问,而您的出站连接被阻止。设置 npm 的代理和 https-proxy(和/或 http_proxy/https_proxy 环境变量)以通过 http://USER:PASS@proxy.s4m.online:3128. 路由。
我该如何配置Yarn Berry与yarn v1?
Yarn v1 使用 yarn config set proxy / https-proxy。Yarn Berry (v2+) 在 .yarnrc.yml 中使用 httpProxy 和 httpsProxy 键。每个项目使用一种风格;不要混合使用。
我的密码包含特殊字符,代理失败——为什么?
npm将代理值解析为URL,因此密码中的字符如@、:或#必须进行URL编码(例如@变为%40)。编码后,凭据解析正确。
我如何将内部注册表保持在代理之外?
将内部注册表的主机名添加到noproxy (npm)或no_proxy (env)列表中。然后可以直接访问该主机,而公共注册表流量仍然通过代理。
人们通过搜索找到此页面
- 在代理后使用 npm 和 yarn
- 带有SOCKS5代理的curl:完整参考
- 如何检查 在代理后使用 npm 和 yarn
- 在代理后使用 npm 和 yarn 用于抓取
- 在代理后使用 npm 和 yarn设置
- SOCKS5 认证方法 (RFC 1929)
- VPN 断开开关 教程
- http 代理 使用加密货币支付
- 如何配置wireguard
- openvpn
- wireguard
- VPN 和代理常见问题:简短、诚实的答案
此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。