根本原因是vscode未将包含tsconfig.json的文件夹作为工作区根目录打开;必须通过“文件>打开文件夹”直接选中该目录,确保资源管理器顶部路径与tsconfig.json所在路径完全一致。

VSCode 报 Vetur can't find 'tsconfig.json' 或 Volar can't resolve tsconfig.json,根本原因只有一个:它没在你当前打开的“工作区根目录”里找到这个文件。不是路径写错了,也不是配置不合法,而是 VSCode 根本没把你的项目当“项目”——它连根在哪都不知道。
确认你打开的是真正的项目根目录
这是 80% 问题的源头。VSCode 的 tsconfig.json 查找逻辑非常机械:只扫最外层打开的文件夹(即工作区根),不会向上或向下跨级搜索。
- 错误做法:双击打开
my-project/src文件夹,或者从父级文件夹workspace/里嵌套打开my-project - 正确做法:关闭所有文件夹 → 点击「文件 > 打开文件夹」→ 直接选中包含
package.json和tsconfig.json的那个文件夹(通常是my-project) - 验证方式:在 VSCode 左侧资源管理器顶部,看到的路径必须和
tsconfig.json所在路径完全一致;如果顶部显示workspace/my-project,那说明你打开了父级,要重开
tsconfig.json 存在但 Volar/Vetur 仍报错?检查 baseUrl 和 paths 是否生效
即使文件存在,Volar 和 Vetur 对 baseUrl 和 paths 的识别有前提:它们依赖 TypeScript 语言服务读取配置。如果 TS 服务没加载成功,路径别名就只是字符串。
- 先执行
TypeScript: Restart TS server(Ctrl+Shift+P 输入后回车) - 再确认
tsconfig.json中至少包含这两项:"baseUrl": "."和"paths": { "@/*": ["src/*"] } - 确保
"include"字段覆盖了.vue文件,例如:"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"] - Volar 用户额外检查设置:
Volar: Use Tsconfig必须为启用状态(默认是 on,但 Workspace 设置可能覆盖)
纯 JavaScript 项目该用 jsconfig.json 还是 tsconfig.json?
Vue CLI 创建的 JS 项目默认只有 jsconfig.json,但 Volar(尤其 Vue 3)会优先尝试加载 tsconfig.json;如果两者都不存在,它可能跳过路径解析直接报错。
- 推荐统一用
tsconfig.json:哪怕不用 TypeScript,也建一个最小化配置,避免插件行为不一致 - 最简可用内容:
{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } } } - 如果坚持用
jsconfig.json,Vetur 可以识别,但 Volar 对它的支持较弱,容易出现路径跳转失效 —— 尤其在<script setup></script>中 import 组件时
同时装了 Vetur 和 Volar?立刻停掉 Vetur
两个插件对 .vue 文件的解析机制冲突,会导致路径解析时而走 Vetur、时而走 Volar,tsconfig.json 加载状态不稳定,报错忽隐忽现。
- 禁用 Vetur 的全局启用:
Vetur: Enable设为 false - 在扩展面板中右键 Vetur → 「Disable (Workspace)」
- 重启 VSCode 窗口(不是仅重载):Ctrl+Shift+P →
Developer: Reload Window - 验证:打开一个
.vue文件,右下角语言模式应显示「Vue (Volar)」,而不是「Vue」或「Vue (Vetur)」
真正卡住人的从来不是配置本身,而是 VSCode 工作区根目录和 TypeScript 语言服务之间的那一层“信任关系”——它不靠文件存在,而靠你明确告诉它“这就是根”。一旦这层关系建立,tsconfig.json 就不再是被寻找的对象,而是被信任的源头。











