vscode智能提示失效主因是typescript语言服务器(tsserver)崩溃或卡死,需手动执行“typescript: restart ts server”重启;前提是已打开文件夹、存在tsconfig.json/jsconfig.json、语言模式正确且typescript.tsdk配置无误。

VSCode 智能提示(IntelliSense)突然不弹出、跳转定义失效、悬停没类型信息——大概率不是插件没装,而是 TypeScript/JavaScript 语言服务器(tsserver)已崩溃或卡死,需要手动重启。
为什么 tsserver 会挂掉却不报错
TypeScript 语言服务是独立于 VSCode 主进程运行的 Node.js 子进程,长期运行后容易因内存泄漏、大文件解析失败或配置错误而静默退出。此时 VSCode 状态栏右下角的 TS Server: Running 可能还显示正常,但实际已无响应。
- 典型现象:光标悬停变量无类型提示;
Ctrl+Click跳转失败;输入arr.后无数组方法补全 - 验证方式:打开命令面板(
Ctrl+Shift+P),执行Developer: Toggle Developer Tools,切换到 Console 标签页,搜TypeError或Cannot read property—— 若有大量报错,基本可断定服务异常 - 不要等它自己恢复:tsserver 不会自动拉起,必须人工干预
TypeScript: Restart TS server 怎么用才有效
这个命令不是“刷新缓存”,而是强制终止当前 tsserver 进程并启动一个全新实例。但它只在特定条件下生效:
- 必须在已打开文件夹(而非单个文件)的窗口中执行,否则新服务无法加载
tsconfig.json或jsconfig.json - 如果项目根目录下没有配置文件,即使重启,服务也会退化为
JavaScript (Plain)模式,仅提供基础语法补全 - 执行后需等待 2–5 秒,观察状态栏右下角图标是否从灰色变为蓝色并稳定亮起;若仍闪烁或变灰,说明配置或路径仍有问题
重启无效?检查这三处硬性依赖
tsserver 启动失败常被误判为“重启没用”,实则是底层依赖缺失或冲突:
-
typescript.tsdk路径配置错误:在settings.json中检查是否手动设了"typescript.tsdk",指向一个不存在的目录(如旧版本全局安装路径);删掉这一行,让 VSCode 使用内置 SDK - 工作区被禁用 TS 插件:打开命令面板,输入
Extensions: Show Enabled Extensions,搜索@builtin typescript,确认TypeScript and JavaScript Language Features已启用 - 文件语言模式错误:右下角显示
Plain Text或JSON?点它,选JavaScript或TypeScript;否则语言服务根本不会加载
远程开发时 tsserver 特别容易崩
通过 SSH 或 Dev Containers 连接远程环境时,tsserver 崩溃频率显著升高,主因不是代码问题,而是环境隔离导致的资源不可见:
- 容器内未挂载
/tmp或用户缓存目录,tsserver 启动时写入临时文件失败,直接退出 - 远程服务器上
node版本过低(v14.18以下),或npm权限受限,导致node_modules/.cache/typescript初始化失败 - 网络延迟高(RTT > 150ms)时,VSCode 客户端反复重试连接,触发服务端限流保护,表现为“提示延迟 3 秒以上”或“补全列表空白”
这类问题不会在本地复现,也极少出现在日志里——得看远程机器上的 ps aux | grep tsserver 是否真有进程在跑。











