volar 必须接管 typescript 语言服务,否则 defineprops、ref 类型失效;需禁用内置 ts 插件和 vetur,手动设 .vue 文件语言模式为 vue,确保根目录有含 "src/*/.vue" 和 "vue" 类型的 tsconfig.json,并配置 .vscode/settings.json 启用 volar。

Volar 必须接管 TypeScript 语言服务,否则 defineProps、ref 类型全失效——不是代码写错了,是 VSCode 根本没进 Vue SFC 模式。
禁用内置 TS 插件 + 禁用 Vetur
VSCode 自带的 TypeScript and JavaScript Language Features 和旧版 Vetur 都会抢 .vue 文件的控制权,导致 Volar 的类型推导完全不工作。典型症状包括:Cannot find name 'defineProps'、模板里变量无提示、v-model 绑定没类型检查。
实操建议:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入built→ 选Extensions: Show Built-in Extensions - 搜索
@builtin typescript,找到TypeScript and JavaScript Language Features→ 点击齿轮图标 →Disable (Workspace) - 同理,找到
Vetur→Disable (Workspace) - 重启 VSCode(必须完全退出再打开,不能只重载窗口)
手动设置 .vue 文件语言模式为 Vue
即使装了 Volar,VSCode 仍可能用 HTML 或 Vue (Vetur) 模式打开 .vue 文件——右下角显示的不是干净的 Vue,而是其他名称。这说明 Volar 的语言服务根本没加载。
实操建议:
- 打开任意
.vue文件,点击右下角语言标签(如显示HTML或Vue (Vetur)) - 选
Configure File Association for '.vue'→ 输入vue回车(不要选带括号的选项) - 再点一次语言标签,手动切换成
Vue - 按
Ctrl+Shift+P运行Developer: Toggle Developer Tools,在 Console 里搜volar,确认有Registering Vue language features日志
项目根目录必须有正确的 tsconfig.json
Volar 的类型能力严重依赖 tsconfig.json 能“看到”所有 .vue 文件。Vite 默认生成的配置一般没问题,但如果你删过、挪过、或用了 pnpm/yarn pnp,就容易漏掉关键项。
使用 `@ainative/vue-sdk` 为 Vue 3 应用添加 AI 聊天功能。适用于以下场景:(1) 安装 `@ainative/vue-sdk`,(2) 在 Vue 组件中使用 `useChat` 组合式函数,(3) 提供……
实操建议:
- 确保项目根目录存在
tsconfig.json(不是src/tsconfig.json) -
"include"字段必须包含"src/**/*.vue" -
"compilerOptions.types"必须含"vue"(例如:"types": ["vite/client", "vue"]) - 如果用 JS 项目,也要有
jsconfig.json,且"checkJs": true必须开启 - 删掉
src/下任何嵌套的tsconfig.json,Volar 只认根目录那一份
配置 .vscode/settings.json 锁定工作区行为
全局设置会影响其他项目,而 Vue3 开发中很多问题(比如路径别名跳转失败、格式化错乱)都源于工作区配置缺失。尤其当你用 pnpm 或自定义 node_modules 路径时,Volar 可能找不到核心包。
实操建议:
- 在项目根目录建
.vscode/settings.json,写入:
{
"volar.enable": true,
"volar.enableStatusBar": true,
"volar.autoInsertDotValue": true,
"volar.ignoreProjectName": ["node_modules"],
"editor.formatOnSave": true,
"editor.defaultFormatter": "Vue.volar",
"prettier.vueFilesSuffixes": []
}
说明:prettier.vueFilesSuffixes 清空后,Prettier 不再处理 .vue 文件,改由 Volar 格式化,避免属性换行错乱;volar.serverPath 仅当 pnpm 项目且 node_modules 不在根目录时才需显式指定。
最常被忽略的是:Volar 的类型推导必须靠 defineProps 或 defineEmits 这类宏作为“开关”,哪怕你暂时不用 props,也得写个 const props = defineProps(),否则 script setup 块会被当成普通 TS 处理——这点没有警告,只有类型悄悄变成 any。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










