VSCode插件市场卡住或安装超时,99%因未配对生效extensions.gallery.serviceUrl和cacheUrl;必须同时配置、同域、结尾不带/,且需修改settings.json和product.json并彻底退出进程后重启。

插件市场卡在“正在加载”或安装超时,99% 是因为没配对生效的 extensions.gallery.serviceUrl 和 extensions.gallery.cacheUrl —— 单独改一个等于白改。
为什么 settings.json 配了 serviceUrl 还是卡住?
VSCode 1.83+ 版本起,extensions.gallery.serviceUrl 必须和 extensions.gallery.cacheUrl 同时存在、同域、结尾不带 /,否则整个镜像配置被忽略。常见错误包括:
- 只写了
serviceUrl,漏掉cacheUrl -
serviceUrl末尾多了/(如"https://vscode.cdn.azure.cn/api/gallery/"),导致拼出.../gallery//publishers而 404 - 两个 URL 域名不一致(比如
serviceUrl用vscode.cdn.azure.cn,cacheUrl误写成marketplace.visualstudio.com.cn) - 配置写在工作区
settings.json里,而 VSCode 只读用户级设置
怎么验证镜像是否真生效?
别靠“看起来快了”判断,直接看网络请求:
- 按
Ctrl+Shift+P→ 输入并运行Developer: Toggle Developer Tools - 切换到
Console标签页 - 在扩展面板搜索任意插件(如
Python),观察控制台里发出的GET请求 - 成功时应看到类似:
GET https://vscode.cdn.azure.cn/api/gallery/publishers/ms-python/vsextensions/python/... - 如果仍看到
marketplace.visualstudio.com或vscode.blob.core.windows.net,说明配置没加载或被代理劫持
code --install-extension 命令仍超时怎么办?
命令行安装不继承 settings.json 的镜像配置,它走的是独立环境变量路径:
- 临时生效:在终端里先执行
VSCODE_EXTENSIONS_MSA_URL=https://vscode.cdn.azure.cn code --install-extension esbenp.prettier-vscode - CI/CD 或远程开发中,需在构建脚本里显式导出该变量
- 若仍报
ETIMEDOUT或卡在pending,检查是否后台开着 Clash/Surge 等代理工具——它们常默认启用系统代理但未全局,会干扰code命令的 DNS 解析 - 某些插件(如
ms-python.python)会额外拉取语言服务器二进制包,这部分完全绕过 gallery 协议,镜像源对其无效,只能离线下载或配 HTTP 代理
自动更新插件失败?product.json 得动
插件自动更新(比如弹窗提示“有新版本”)不读 settings.json,它硬编码在 VSCode 安装目录下的 product.json 文件里:
- Windows 路径示例:
C:\Users\<username>\AppData\Local\Programs\Microsoft VS Code\resources\app\product.json</username> - macOS 路径示例:
/Applications/Visual Studio Code.app/Contents/Resources/app/product.json - 找到
extensionsGallery字段,把其中的serviceUrl和cacheUrl全部替换成国内镜像地址(格式与settings.json一致) - 修改后必须彻底退出 VSCode 进程(Windows 右键任务栏图标选「退出」,macOS 用 Activity Monitor 杀掉所有
Code进程),否则改动不生效
最容易被忽略的点是:插件市场和自动更新走两套完全独立的配置体系,settings.json 改了只是让 UI 界面快,product.json 不动,下次弹窗更新照样连海外 CDN。这两个文件一个都不能少。


















