VSCode报“找不到模块”主因是TS服务未加载正确tsconfig或类型声明未覆盖路径;需确认右下角显示tsconfig.app.json、配置baseUrl="./"与paths["@/"]=["./src/"]、根目录建env.d.ts含declare module "*.vue"、include包含该文件并重启TS Server。

VSCode里报“找不到模块”,大概率不是代码写错了,而是TypeScript语言服务压根没加载对配置,或者压根没看到你写的类型声明文件。
为什么 tsc 能过但 VSCode 一直标红?
VSCode 默认只读项目根目录下的 tsconfig.json,而 Vite、Vue CLI 等工具常把真正生效的配置拆成 tsconfig.app.json、tsconfig.node.json。如果你只在 tsconfig.app.json 里写了 "paths" 和 "include",但 VSCode 加载的是空的根 tsconfig.json,那所有 @/xxx 都会飘红。
- 点右下角 TypeScript 版本号,确认它显示的是
tsconfig.app.json(不是tsconfig.json) - 运行
Ctrl+Shift+P→TypeScript: Select TypeScript Version→ 选Use Workspace Version - 要么把
compilerOptions.paths和include搬到根tsconfig.json,要么让根配置"extends": "./tsconfig.app.json"
tsconfig.json 的 baseUrl 和 paths 怎么配才不翻车?
这两个字段必须严格对齐,否则路径解析起点错位,别名就形同虚设。
-
baseUrl必须是字符串"./",不能省略,也不能写成"src"或"./src" -
paths的 value 必须是数组,且每个路径以./开头,例如:"@/*": ["./src/*"]✅,"@/*": ["src/*"]❌ -
include字段必须覆盖所有用到别名的源码,比如"include": ["src/**/*", "env.d.ts"],只写["src/index.ts"]会导致其他文件“失联”
@/components/Hello.vue 找不到类型声明?先看 env.d.ts
Vue 文件不是原生 TS 支持的模块类型,必须手动告诉 TypeScript:“.vue 是可导入的,它有类型”。这个声明不能放在 src/shims-vue.d.ts(旧 Vue CLI 做法),Vite + Vue 3 项目中它得在项目根目录,且名字得是 env.d.ts 或 global.d.ts。
- 确保
tsconfig.json的include包含它:"include": ["env.d.ts", "src/**/*"] -
env.d.ts内容要带/// <reference types="vite/client"></reference>,否则import.meta.env也会报错 - 内容末尾加
declare module "*.vue"块,导出DefineComponent类型,不能漏掉export default component
重启 TS Server 不是可选项,是必做动作
改完 tsconfig.json 或 env.d.ts 后,VSCode 不会自动刷新缓存。旧配置还在内存里跑,新配置等于白写。
- 按
Ctrl+Shift+P(Mac 是Cmd+Shift+P)→ 输入TypeScript: Restart TS Server并执行 - 如果用了 Volar 插件,建议关掉 VSCode 内置的 TypeScript 自动导入(
TypeScript > Suggest: Auto Imports设为false),否则和 Volar 冲突更难排查 - 路径跳转仍无效?检查是否装了
Path Intellisense插件,并在工作区settings.json中配好:"path-intellisense.mappings": { "@": "${workspaceFolder}/src" }
最常被忽略的一点:node_modules/typescript 必须真实存在,且版本和 tsconfig.json 中启用的特性匹配——比如用了 satisfies 但本地装的是 TS 5.2,而 VSCode 加载的是内置的 5.0,那连语法高亮都会出问题。











