vue 3 项目必须使用 volar 而非 vetur,因 vetur 已停更且仅支持 vue 2,混用会导致 ref 类型提示失效、defineprops 泛型不识别、模板中 @click 参数类型丢失;需禁用 vetur、安装启用官方 volar 插件、重启 vscode 并配置 tsconfig.json 支持路径别名。

Vue 3 项目必须用 Volar,不是 Vetur
Vue 3 的响应式系统、组合式 API 和类型推导深度依赖 Volar,而 Vetur 只支持 Vue 2,且与 Volar 冲突。装了 Vetur 还没关掉,ref 类型提示失效、defineProps 泛型不识别、模板中 @click 参数类型丢失——全是这个原因。
操作上只需两步:
- 卸载或禁用
Vetur(VSCode 设置里搜 “Vetur”,勾掉 “启用”) - 安装并启用
Volar(官方插件 ID:vue.volar) - 重启 VSCode 后,打开任意
.vue文件,按Ctrl+Click跳转defineComponent,能进源码就说明生效
template 里写 props.xxx 没提示?检查 defineProps 是否带泛型
Vue 3 的模板类型提示不是自动开启的,它完全依赖 defineProps() 的显式声明。只写 defineProps({}) 或 defineProps(['xxx']),模板里就只有基础字符串补全,没有类型安全和属性提示。
正确写法示例:
const props = defineProps()
注意点:
- 必须用 TypeScript 泛型语法,不能用
as断言 - 如果用了
withDefaults,泛型仍需完整声明所有字段(含可选),否则默认值字段在 template 中会提示 “可能为 undefined” - 脚手架生成的
script setup默认不启用类型推导,需确认项目有tsconfig.json且包含"vueCompilerOptions"配置
保存时自动修复 ESLint 报错,但 eslint.autoFixOnSave 已废弃
VSCode 旧版配置里的 eslint.autoFixOnSave 在 2022 年后已被弃用,继续写它不会生效,也不会报错——只是静默失效。

