vue 3 项目必须禁用 vetur 并启用 volar,否则类型提示、defineprops 泛型检查、模板中 ref 跳转及 v-model 解析将全面失效;因二者注册冲突的语言服务,vetur 会抢占入口导致 volar 不工作,需禁用 vetur、启用 volar、重启 vscode 并确认状态栏显示 vue (volar)。

Vetur 和 Volar 不能共存,禁用 Vetur 是必须操作,不是可选项。 否则 Vue 3 的语法提示、类型推断、v-model 解析、defineProps 类型检查全都会失效或报错,且错误信息往往不指向真实原因(比如显示“找不到模块”或“ref 未定义”,实际是语言服务没加载)。
为什么禁用 Vetur 是第一步?
Vetur 是 Vue 2 时代的语言支持插件,已停止维护;Volar 是 Vue 官方推荐的 Vue 3+ 语言服务器。两者注册同一组语言功能(如 vue 语言模式、script setup 支持),VS Code 只能启用其中一个——若 Vetur 仍启用,它会抢占语言服务入口,导致 Volar 完全不工作。
常见现象包括:
-
Ctrl+Space在<script setup></script>中无defineProps补全 - 鼠标悬停变量看不到 TypeScript 类型
-
@/components/xxx.vue跳转失败,报“无法找到模块” - 模板中
v-for、v-if不触发 Emmet 展开
怎么确认 Vetur 是否还在生效?
打开任意 .vue 文件,在右下角状态栏查看语言模式图标。如果显示的是 Vue (Vetur) 或 HTML,说明 Vetur 仍在接管;正确应为 Vue (Volar)。
分析 Vue 3 Composition API 使用情况——审计响应式模式、可组合函数设计、ref 与 reactive 的选择、计算属性、watcher 使用及组件……
操作步骤:
- 按
Ctrl+Shift+P打开命令面板,输入Extensions: Show Enabled Extensions - 搜索
vetur,点击右侧齿轮图标 →Disable - 搜索
volar,确保Volar和Volar Server均为启用状态 - 关闭并重新打开
.vue文件,观察右下角语言模式是否变为Vue (Volar)
禁用 Vetur 后还报错?检查这三处
禁用只是前提,不是万能解。以下配置缺一不可:
-
files.associations必须设为"*.vue": "vue",否则 VS Code 把 .vue 当 HTML 解析,Volar 根本不启动 - 项目根目录要有
jsconfig.json(JS 项目)或tsconfig.json(TS 项目),且"types"中包含"vue",否则defineProps、ref等全局类型无法识别 - 若用 Vite,确认
vite.config.ts中resolve.alias已配@别名;同时jsconfig.json的"paths"也要同步映射,否则跳转和类型检查双失效
最常被忽略的是:禁用 Vetur 后不重启文件或不重开 VS Code 窗口,Volar 不会自动接管已打开的标签页。关掉所有 .vue 文件,再重新打开一个,才是验证是否生效的唯一可靠方式。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










