必须禁用vetur并启用volar,因二者底层架构不兼容:vetur面向vue 2,volar专为vue 3设计,共存会导致defineprops报错、跳转失效、emits不识别及模板类型提示丢失。

Vue 文件爆红但代码无误,大概率是 Volar 和 Vetur 同时启用
Vue 项目里 .vue 文件突然满屏红色波浪线、defineComponent 报错、setup() 中的响应式变量提示“未定义”,但实际运行完全正常——这几乎可以断定是 Volar(Vue 3)和 Vetur(Vue 2)在后台抢解析权。Volar 会接管 script setup 和组合式 API 的类型推导,而 Vetur 仍试图用 Vue 2 的旧规则解析,结果互相覆盖、类型丢失。
- 打开插件面板(
Ctrl+Shift+X),搜索vetur,禁用Vue.js Extension Pack或单独禁用VueTooling.vetur - 确认
Volar已启用,且 VSCode 设置中明确指定:"vue.preferences.useVolarForVue3": true - 重启 VSCode 后,右键点击任意
.vue文件 →Change Language Mode→ 选Vue(不是Vue HTML),确保语言模式绑定到 Volar
React 项目中组件跳转失效或 props 类型不提示
点进一个 MyButton 组件,按 F12 跳转却停在 node_modules 里的声明文件,或者 JSX 中 onClick 的类型提示为空——这类问题常因多个语言服务插件同时注册了 typescript-language-features 的能力。比如 ESLint 插件启用了 eslint.lintTask.enable,Typescript Hero 又强行接管了符号查找,导致 TS 语言服务器返回冲突结果。
- 优先保留 VSCode 内置的
@vscode/typescript-language-features(无需安装),禁用所有第三方 TS 增强类插件,如TypeScript Hero、Auto Import(它会覆盖 TS 的自动导入逻辑) - 检查
settings.json中是否误加了"typescript.preferences.includePackageJsonAutoImports": "auto"这类非标准配置项,删掉 - 若使用
ESLint,关闭其语言服务干扰:"eslint.experimental.useFlatConfig": false(旧版配置) +"eslint.lintTask.enable": false(避免它启动自己的 TS 服务)
Angular 项目中模板语法高亮全白、*ngIf 无补全
Angular 模板(.html 文件)里指令变成纯文本、结构指令无悬停提示、routerLink 不识别为属性——这不是 Angular 语言服务没装,而是 Angular Language Service 被其他插件“挤掉”了。常见于同时启用 Auto Close Tag 和 Angular Language Service:前者劫持了 HTML 编辑器事件流,后者无法注入模板解析器。
- 禁用
formulahendry.auto-close-tag,改用 VSCode 原生设置:"html.autoClosingTag": true(已在 1.89+ 默认开启) - 确保
Angular.ng-template插件已启用,且工作区根目录下存在tsconfig.json或angular.json(否则语言服务不会激活) - 打开命令面板,运行
Developer: Show Running Extensions,确认Angular.ng-template状态为 “Active”,加载耗时 indent-rainbow、bracket-pair-colorizer-2)
多框架共存项目(如 Vue + React 混合)里语言模式混乱
一个仓库里既有 src/views/(Vue)又有 src/components/(React),VSCode 随机把 .tsx 当成 Vue 文件解析,或把 .vue 交给 TypeScript 语言服务处理——根本原因是文件关联(files.associations)被多个插件覆盖,且没有显式锁定。
- 在工作区
.vscode/settings.json中强制指定语言映射:"files.associations": { "*.vue": "vue", "*.tsx": "typescriptreact" } - 禁用全局的
file association类插件(如ritwickdey.file-extension-renamer),它们会在启动时动态修改关联表 - 对混合项目,避免使用“一键启用全部插件”的扩展包(如
Vue Peek或React PropTypes),只按需安装单点功能插件
ref 推导成 any;Angular 语言服务不崩溃,但跳过模板校验。你得靠“删一个,试三分钟,再删一个”来逼近真相,而不是等弹窗提醒。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











