必须手动切换.vue文件语言模式为Volar:VSCode默认交由已停更的Vetur处理,导致defineProps、ref等类型推导失效;需右下角点击语言标签→Configure File Association for '.vue'→明确选Volar,并重启VSCode。

装完 Volar 还没语法提示?不是插件没装对,是 VSCode 默认把 .vue 文件交给了已停更的 Vetur 处理——必须手动切走,否则 defineProps、ref 类型推导全失效。
为什么 Volar 不接管 .vue 文件
VSCode 语言服务器有优先级机制:多个插件声明支持 vue 语言时,它按内置规则选一个主服务。Vetur 是旧默认,哪怕你装了 Volar,它也常被降级为只读模式或直接禁用。
- 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,在 Console 里搜volar和vetur,确认Volar是否注册了vue语言服务 - 在任意
.vue文件右下角点击语言标签(如显示 “Vue”),选Configure File Association for '.vue'→ 明确选Volar,别选Vue (Volar)或Vetur这类残留别名 - 检查项目根目录是否有
tsconfig.json或jsconfig.json;若存在,确保"include"没排除src/**/*.vue—— Volar 的模板类型推导依赖 TS/JS 配置能“看到”这些文件
defineProps 报错 Cannot find name 'defineProps'
这不是编译错误,是 Volar 没启用 Vue 语言功能(Language Features),或项目没配好 compilerOptions.vueCompilerOptions。
- 确认插件是官方正版:
Volar(作者:johnsoncodehk),不是Volar Beta、Volar Official等已废弃版本 - 检查 VSCode 设置中是否关闭了 Volar 的语言功能:搜索
volar.enable,确保volar.enable和volar.enableStatusBar都为true - 如果你用
pnpm或yarn pnp,Volar 可能找不到@vue/language-core。临时解法:在项目根目录运行pnpm add -D @vue/language-core(即使不直接引用,Volar 运行时需要这个包)
script setup 里 ref/computed 类型推导失效
Volar 的类型推导只对 script setup 块生效,且要求脚本顶部有明确的 setup 语法标记(比如 defineProps 或 defineEmits),否则会被当成普通 TS 文件处理。
Vue 3 组合式 API 与 最佳实践,涵盖代码组织、useXxx 模式、组合式函数设计、Store 集成、响应式优化及功能抽取。
立即学习“前端免费学习笔记(深入)”;
- 不要省略
defineProps或defineEmits——即使暂时不用 props,也写个空对象:const props = defineProps<{}>(),这是触发 Volar 进入“Vue SFC 模式”的开关 - 避免在
script setup里混用export default;一旦出现,Volar 会退回到通用 TS 模式,类型推导立即失效 - 确保项目根目录
tsconfig.json中启用了"vueCompilerOptions",至少包含:"target": "ES2020"和"moduleResolution": "bundler"
怎么让 @ 别名路径补全和跳转正常工作
Path Intellisense 插件本身不理解 tsconfig.json 的 paths,需额外配置映射关系,否则 import Comp from '@/components/xxx.vue' 无法自动补全或 F12 跳转。
- 在项目根目录的
.vscode/settings.json中添加:"path-intellisense.mappings": { "@": "${workspaceFolder}/src" } - 如果项目用了 TypeScript 的
paths(如"@/*": ["src/*"]),还需在tsconfig.json中设"baseUrl": ".",并确保Volar的 TypeScript 服务能读取该配置(重启 VSCode) - 验证方式:在
import语句中输入@/,看是否弹出src/下的子目录;若无响应,说明映射未生效或路径拼写不一致(注意斜杠方向)
最常被忽略的是完全退出 VSCode 再重开——仅重载窗口不会重建语言服务器连接,Volar 就一直卡在“已安装但未激活”状态。

















