Node进程不读VSCode的http.proxy设置,该配置仅影响VSCode自身请求(如插件安装、GitHub登录),对终端中启动的node/npm/yarn等进程完全无效;需通过环境变量、npm config或代码级代理配置显式设置。

Node进程不读VSCode的http.proxy设置
VSCode 的 http.proxy 配置只影响它自己发起的请求(比如插件安装、登录 GitHub),对终端里启动的 node 进程完全无效。你改了 VSCode 设置,但 npm install 或 node fetch.js 依然超时,这是预期行为,不是配置漏了。
- Node 默认不继承任何代理环境变量,除非你显式传入或在代码里手动设置
-
npm和yarn会读HTTP_PROXY/HTTPS_PROXY,但 Node.js 原生命令(如require('https').request)不会 - VSCode 终端窗口启动时,是否加载了 shell 的环境变量,取决于你如何启动 VSCode:从命令行运行
code才能继承;双击图标则通常不加载
让Node脚本走代理的三种实操方式
根据使用场景选一种,别混用:
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 临时调试:在终端里先执行
export HTTPS_PROXY=http://127.0.0.1:7890(macOS/Linux)或set HTTPS_PROXY=http://127.0.0.1:7890(Windows CMD),再跑node index.js - 项目级固化:在项目根目录加
.env文件,写HTTPS_PROXY=http://127.0.0.1:7890,配合dotenv+ 启动时手动注入代理选项(需代码支持) - 全局生效(谨慎):在 shell 配置文件(
~/.zprofile或%USERPROFILE%\AppData\Roaming\Code\User\settings.json不起作用)里设环境变量,并确保 VSCode 是从该 shell 启动的
Node Fetch/axios 请求失败的常见坑
即使环境变量设对了,Node 的 HTTP 客户端仍可能因证书问题失败:
-
axios默认校验 TLS 证书;若你用的是 Charles/Fiddler/Clash 的 HTTPS 解密功能,必须加{ httpsAgent: new https.Agent({ rejectUnauthorized: false }) } -
node-fetchv3+ 不再默认信任系统证书,遇到自签名代理时会报DEPTH_ZERO_SELF_SIGNED_CERT,需传{ dispatcher: new ProxyAgent('http://127.0.0.1:7890') }(需装undici) - 别依赖
process.env.HTTPS_PROXY自动生效——Node 标准库不解析它,必须显式传给客户端构造函数
vscode-terminal 中 npm/yarn 卡住怎么办
现象是 npm install 卡在 fetchMetadata 或返回 ETIMEDOUT,本质是 npm 没读到代理:
- 确认
npm config get proxy和npm config get https-proxy是否为空;若为空,执行npm config set proxy http://127.0.0.1:7890和npm config set https-proxy http://127.0.0.1:7890 - npm 的 proxy 设置优先级高于环境变量,且会写入
~/.npmrc,比每次 export 更可靠 - 如果用了认证代理(如
user:pass@127.0.0.1:7890),密码含@或:必须 URL 编码,否则 npm 解析失败
node 就能上网;反之亦然。代理地址写成 localhost 而非 127.0.0.1,在某些 Node 版本下也会静默失败。

















