Volar是Vue 3项目唯一应启用的核心插件,Vetur必须禁用或卸载,否则因二者均注册.vue文件语言服务且协议不兼容,导致defineProps类型丢失、模板跳转失效、指令无提示等问题。
Volar 是当前 Vue 3 项目唯一应启用的智能分析核心插件,Vetur 必须禁用或卸载,否则类型推导和补全会失效。
为什么 Volar 不能和 Vetur 共存
Vetur 和 Volar 都会注册
文件的语言服务,但 VSCode 只允许一个激活。Vetur 对 Composition API 和 TypeScript 的支持已停止维护,遇到
类型丢失、
在模板中无提示、
跳转失败等问题,基本都是 Vetur 拦截了语言请求。
常见错误现象包括:
(TS 报错但实际存在)
模板中点击
无法跳转到
区域无自动导入建议,
不识别
解决方法很简单:
立即学习
“
前端免费学习笔记(深入)
”;
在扩展面板中搜索
,点击“禁用”或“卸载”
确认
和
已安装并启用
重启 VSCode,打开任意
文件,检查右下角状态栏是否显示 “Vue (Volar)”
ESLint +
vue
-eslint-plugin 实现真正可修复的代码分析
仅靠语法高亮和跳转不够,真实开发中需要知道“哪里写错了、为什么错、怎么改”。
是目前唯一能深度解析 Vue SFC 模板语法、响应式逻辑和组件结构的 Lint 插件。
关键配置点:
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
项目级
中必须包含
,不能只用
VSCode 设置里要显式声明校验目标:
若使用
声明 props,需在 ESLint 配置中开启
指向
,否则 TS 类型不被识别
典型可自动修复问题:
修饰符拼写错误(
→
)
未使用的
函数(保存即删)
模板中直接调用非响应式函数(触发
提示)
保存时自动修复的边界在哪
看似万能,但实际有明确限制:
它只修复
规则中标记为
的问题(比如缩进、引号、空格),不修复逻辑错误(如
误写成
)
若项目没装
,ESLint 和 Prettier 规则冲突会导致保存后反复格式化又报错
对
区域的修复能力弱于
,例如
顺序错误不会自动调整
所以务必确保:
项目依赖中存在
,并在
中排在最后
里不要设置与 ESLint 冲突的规则(如
或
)
遇到保存后代码“越修越乱”,先关掉
,手动运行
定位具体哪条规则出问题
路径补全和自动导入不是锦上添花,而是 Vue 工程提速刚需
Vue 项目目录层级深、别名多(
、
),手写 import 路径极易出错且耗时。两个插件必须配齐:
:输入
后,自动列出该路径下所有
文件
:光标悬停在
上按
,自动插入
注意坑点:
如果
中
和
配置了别名,
默认不识别,需在 VSCode 设置中开启
和
对
中定义的
不原生支持,需手动在插件设置里补充
最常被忽略的是:这些插件的生效前提是 Volar 正确加载了项目 TS 服务——如果右下角显示 “TypeScript (Workspace)” 而非 “TypeScript (Volar)”,路径和导入功能大概率失效,此时应检查
是否指向项目本地
。
script setup.vuedefinePropsrefonMountedProperty 'xxx' does not exist on type '{}'countconst count = ref(0)script setupdefineEmitsVeturVolarTypeScript Vue Plugin (Volar).vueeslint-plugin-vue.eslintrc.cjs'plugin:vue/vue3-recommended'eslint:recommended"eslint.validate": ["javascript", "typescript", "vue"]definePropsparserOptions.parser@typescript-eslint/parserv-modelv-model.trimv-model:trimdefineEmitsvue/no-unregistered-components"editor.codeActionsOnSave": {"source.fixAll.eslint": true}eslint-plugin-vuefixablerefreactive@vue/eslint-config-prettiertemplatescriptv-if/v-for@vue/eslint-config-prettierextendsprettier.config.jssemiquotessource.fixAll.eslintnpx eslint --fix@/components~/utilsPath Intellisenseimport { useAuth } from '@/composables.tsAuto ImportrefCtrl+.import { ref } from 'vue'tsconfig.jsonbaseUrlpathsAuto Importjavascript.suggest.autoImportstypescript.suggest.autoImportsPath Intellisensevite.config.tsresolve.aliaspath-intellisense.mappingstypescript.tsdknode_modules/typescript/lib