VSCode 语言服务器卡在“正在更新”转圈的常见原因包括网络失败、权限不足或缓存损坏,导致扩展(如 Python、ESLint 等)后台下载或解压语言服务器二进制时静默失败;手动清理对应扩展的缓存目录(如 ms-python.python 的 languageServer 子目录)、切换语言服务器实现(如改用 Pylance)、配置代理或禁用自动更新可有效解决。

VSCode 语言服务器卡在“正在更新”转圈的常见原因
这个提示本质是某个扩展(比如 Python、ESLint、Prettier 或 IntelliSense 相关插件)在后台拉取或解压语言服务器二进制,但网络失败、权限不足或缓存损坏后没报错,只卡在 UI 提示里。
常见错误现象包括:
- 右下角弹窗不消失,鼠标悬停显示“正在更新
python语言服务器”或类似内容 -
Ctrl+Shift+P打开命令面板,输入Developer: Toggle Developer Tools后,在 Console 里能看到Failed to fetch或EPERM错误 - 编辑器功能正常,但智能提示、跳转、格式化等延迟或失效
不是所有语言服务器都走同一套更新逻辑:Python 扩展用的是 pylsp 或 pyright,JavaScript 依赖 typescript-language-server,而 Rust 是 rust-analyzer —— 它们各自的更新路径、缓存位置和失败重试策略完全不同。
手动清理语言服务器缓存目录
VSCode 不提供一键清除语言服务器缓存的按钮,必须定位到对应扩展的缓存路径并删掉它。不同系统路径不同,但规律一致:都在扩展安装目录下的 node_modules 或 server 子目录里,或者用户数据目录的 extensions 下。
以 Python 扩展为例(Microsoft 官方版本):
- Windows:
%USERPROFILE%.vscodeextensionsms-python.python-<version>outlanguageServer</version> - macOS:
~/Library/Application Support/Code/User/globalStorage/ms-python.python/languageServer-(注意带随机后缀) - Linux:
~/.vscode/extensions/ms-python.python-<version>/out/languageServer/</version>
操作前先退出 VSCode,然后:
- 查找含
languageServer、server、bin的子目录 - 删除整个目录(不是只删里面的文件)
- 不要删
package.json或extension.js等主逻辑文件 - 如果不确定,可先重命名该目录(如加
.bak后缀),再重启验证
其他扩展类似:esbenp.prettier-vscode 的服务器缓存在 dist 下;rust-lang.rust-analyzer 则会把二进制放在 ~/.cache/rust-analyzer/(Linux/macOS)或 %LOCALAPPDATA%rust-analyzer(Windows)。
禁用自动更新或切换下载源
有些扩展(如 Python)默认从 GitHub Releases 下载服务器,国内访问容易超时。可以强制改用镜像或关闭自动更新:
- 在 VSCode 设置中搜索
python.defaultInterpreterPath,确认解释器路径正确(否则可能触发误判更新) - 搜索
python.languageServer,临时改成Pylance(如果已装)或None,看是否还弹窗 - 对于
rust-analyzer,编辑settings.json加入:"rust-analyzer.updates.channel": "none" - 对于
typescript相关,检查typescript.preferences.includePackageJsonAutoImports是否异常启用导致反复加载
关键点:不是所有扩展都支持“关闭更新”,但几乎所有都支持换语言服务器实现(比如把 Default 换成 Pylance 或 Pyright),换完后旧缓存就不再被读取。
检查代理与防火墙干扰
VSCode 默认复用系统代理,但某些企业环境或杀毒软件会劫持 HTTPS 请求,导致语言服务器下载中途断开,又不抛出明确错误。
典型表现:
- 其他应用能联网,但 VSCode 扩展更新失败
- 开发者工具 Console 中出现
net::ERR_CONNECTION_RESET -
curl -v <a href="https://www.php.cn/link/048517851c55e77cf9daf170c6fdd7ab">https://www.php.cn/link/048517851c55e77cf9daf170c6fdd7ab</a>正常,但 VSCode 内部请求失败
解决方法:
- 在 VSCode 设置中搜索
http.proxy,设为空值或明确填入公司代理地址 - 搜索
http.proxyStrictSSL,设为false(仅调试用,不推荐长期开启) - 临时关闭 Windows Defender 防火墙或第三方安全软件,观察是否恢复
- 如果用的是
cnpm或pnpm镜像源,确认 VSCode 没有被配置成用它们拉取语言服务器(它不用 npm registry)
语言服务器更新机制藏得深,没有统一入口,也没有失败日志汇总页。最稳妥的方式永远是:关 VSCode → 找到对应扩展的缓存 server 目录 → 彻底删掉 → 再打开,让扩展重新下载。别信“重启几次就好”,卡住就是卡住了。