VSCode智能提示失效主因是TypeScript语言服务器未启动或配置错误:单文件无项目上下文、缺少jsconfig.json/tsconfig.json、工作区未信任、插件冲突或路径误配均会导致LSP退化为文本模式。

VSCode 的智能提示失效,大概率不是插件没装,而是语言服务器(LSP)根本没启动或配置错路径——尤其当你打开的是单个 .js 文件、没开文件夹,或项目里缺少 jsconfig.json/tsconfig.json 时,TypeScript 语言服务会直接退化为基础文本模式。
为什么打开单个 JS/TS 文件时没有类型提示
VSCode 默认对孤立文件启用“JavaScript (Plain)”模式,不加载 TypeScript 语言服务器。它只在检测到项目上下文(如存在 tsconfig.json、jsconfig.json 或 node_modules 中有类型包)时才激活完整 LSP 支持。
- 临时解决:按
Ctrl+Shift+P(macOS 为Cmd+Shift+P),输入Developer: Restart TS Server强制重载 - 长期方案:在项目根目录放一个最小
jsconfig.json:{ "compilerOptions": { "checkJs": true, "allowJs": true } } - 验证是否生效:打开任意
.js文件,将光标停在某个变量上,看右下角状态栏是否显示TS Server: Running
安装了 TypeScript 插件但提示仍不工作
VSCode 自带 TypeScript 支持,第三方插件(如 “TypeScript Toolbox”)反而可能干扰内置 LSP。真正需要确认的是:TypeScript SDK 路径是否被手动覆盖,以及工作区是否禁用了 TS 插件。
- 检查路径:打开设置搜索
typescript.preferences.includePackageJsonAutoImports,再点右上角 “在 settings.json 中编辑”,确认没有误配"typescript.tsdk"指向一个不存在的目录 - 禁用冲突插件:在扩展面板中搜
@builtin TypeScript,确保官方扩展已启用;同时禁用所有标有 “(unofficial)” 或 “for TS” 的非必要插件 - 查看日志:命令面板运行
Typescript: Open TS Server Log,如果日志里反复出现Cannot read property 'map' of undefined,说明某处配置语法错误
Vue/React 项目中 JSX/Template 提示不全
JSX 和 Vue SFC 的模板提示依赖对应语言服务器(如 Volar 对 Vue 3、ESLint + typescript-eslint 对 React),而非原生 TS 服务。它们和 TS 服务共存时容易抢夺控制权。
- Vue 项目:必须卸载旧的
Vetur,安装Volar,并在 VSCode 设置中开启"volar.enable": true和"volar.autoInsertDotValue": true - React + TS:确保
node_modules/typescript存在,且tsconfig.json中包含"jsx": "preserve"和"lib": ["ES2015", "DOM"] - 关键动作:打开一个
.vue或.tsx文件后,按Ctrl+Shift+P运行Developer: Toggle Developer Tools,在 Console 里搜Failed to load language,能快速定位是哪个语言服务器挂了
最常被忽略的一点:VSCode 的“工作区信任”机制。如果你打开的是不受信任的文件夹,它会主动禁用所有语言服务器的自动启动——此时状态栏会显示黄色警告,点击后选择“Trust Folder”才能恢复提示。这个开关藏得深,但影响是全局性的。










