插件更新卡在“正在下载”是因VS Code无法连接Marketplace,需检查代理设置或改用离线安装;“Update All”仅更新已启用插件;更新后须重启,缓存问题可删对应node_modules解决;核心插件应手动更新并核对changelog。

插件更新卡在“正在下载”不动?检查网络代理和 Marketplace 连接
VS Code 插件更新失败,最常见现象是点击更新后 正在下载 状态一直挂着,进度条不动、无报错、也无超时提示。这不是插件本身问题,而是 VS Code 无法连上官方 Marketplace(marketplace.visualstudio.com)。国内用户尤其容易遇到——VS Code 默认不走系统代理,也不读取 http_proxy 环境变量。
- 先打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入并运行Developer: Toggle Developer Tools,切到Network标签页,再点一次更新,看是否有vscode-api或marketplace域名的请求失败(状态码 0 或 timeout) - 如果确认是网络问题:在 VS Code 设置里搜
proxy,设置http.proxy为你的代理地址(如http://127.0.0.1:7890),并勾选http.proxyStrictSSL设为false(自签名证书常见) - 临时绕过:用离线方式安装——去
https://marketplace.visualstudio.com/items?itemName=作者名.插件名找到插件页,点右下角Download Extension得到.vsix文件,再用命令面板运行Extensions: Install from VSIX...
一键更新全部插件?别信“全部更新”按钮,它只更新已启用的插件
VS Code 界面右上角那个带数字的 Update All 按钮,看起来很省事,但实际逻辑很窄:它只会更新当前已启用(enabled)、且有新版本可用的插件;被禁用(disabled)的插件不会动,哪怕新版修复了你之前禁用它的那个 bug。
- 想批量更新所有(含禁用)?没有内置方案。必须手动逐个点开插件,右键选
Update,或用命令面板运行Extensions: Show Enabled Extensions/Show Disabled Extensions分批处理 - 注意顺序:建议先更新
ms-vscode.vscode-typescript-next、esbenp.prettier-vscode这类核心语言服务插件,再更新主题、快捷键类插件——避免更新后因 API 变更导致 UI 异常 - 更新后不生效?重启 VS Code 是必须的,尤其是涉及语法高亮、LSP 启动器的插件(如
rust-lang.rust-analyzer),热重载不可靠
更新后插件失效或报 Cannot find module?清缓存比重装更有效
更新完插件,突然发现功能没了,终端里冒出 Cannot find module 'xxx' 或 require() of ES Module not supported,大概率不是插件坏了,而是 VS Code 插件缓存(~/.vscode/extensions/ 下的 node_modules)没刷新干净,特别是从 v1.x 升到 v2.x 的大版本更新。
- 不要直接删整个
extensions文件夹——会丢失已安装插件列表。只删对应插件子目录下的node_modules和package-lock.json(例如esbenp.prettier-vscode-9.10.0/node_modules) - 删完后重启 VS Code,它会自动重新
npm install——这个过程比完整重装插件快,且保留你所有的插件配置(settings.json里的prettier.*项不受影响) - 若仍报错,检查插件文档是否要求 Node.js 版本 ≥18(VS Code 内置的是 Electron 自带的 Node,目前 1.86+ 版本用的是 Node 18.17.0,老版本 VS Code 可能需升级编辑器本身)
插件更新策略:哪些该关自动更新,哪些必须手动盯
VS Code 默认开启 extensions.autoUpdate,听着省心,但对某些插件反而坏事。自动更新不区分语义化版本号(semver),v1.2.3 → v1.3.0 这种“小版本”可能引入破坏性变更,比如 EditorConfig.editorconfig 在 1.0.0 升级后默认关闭了 insert_final_newline,导致团队格式混乱。
- 建议关闭自动更新的插件类型:
editorconfig、prettier-vscode、eslint、rust-analyzer——它们直接影响代码行为或格式,必须人工确认 changelog - 可放心开自动更新的:主题类(
dracula-theme.theme-dracula)、图标包(vscode-icons-team.vscode-icons)、纯 UI 工具(mindaro.mindaro) - 开关方法:在插件详情页点齿轮图标 →
Disable Auto Update,或在settings.json里加"extensions.autoUpdate": false全局关,再用插件特定设置覆盖(如"editorconfig.editorconfig.enable": true)
真正麻烦的从来不是“怎么点”,而是更新前没看 changelog、更新后没验证工作流——比如改了 ESLint 规则却忘了同步 .eslintrc,或者升级了 Prettier 却没通知同事改 package.json 里的版本。这些细节不写进日志,就只能靠人盯着。










