Vue3(Vite/Vitesse)项目.vue文件导入自定义类型提示import not found解决方案咨询
问题根因
- 你的
src/types.ts仅包含TS类型定义,无实际运行时代码,TS转译过程中会擦除所有类型相关代码,最终输出的types.ts产物为空文件 - 你在
.vue文件中导入ProductData等类型时未使用类型专属导入语法,Vite会将该导入识别为运行时依赖,尝试加载对应的JS值,但空产物文件无对应导出,因此触发报错 - store文件为
.ts后缀,TS编译器处理.ts文件时会自动识别类型导入并擦除,不会将其视为运行时依赖,因此store中导入不会报错
解决步骤
- 所有
.vue文件中导入TS类型的语句统一改用import type语法:
原写法:import { ProductData, JsonResponse } from '~/types'
修正写法:import type { ProductData, JsonResponse } from '~/types'
如果需要同时导入值和类型,可分开编写或使用TS 4.5+的内联类型导入语法:// 分开写法 import { someUtilFunction } from '~/types' import type { ProductData } from '~/types' // TS 4.5+内联写法 import { someUtilFunction, type ProductData } from '~/types' - 确认
tsconfig.json中compilerOptions.isolatedModules已开启,你当前配置已经为true,该配置会强制要求明确区分类型导入和值导入,提前规避这类问题 - 修改导入语法后若仍报错,清除Vite缓存重启项目:执行
npx vite --force,或手动删除根目录下的.vite文件夹后重启开发服务 - 若问题仍存在,检查
src/types.ts的导出名称和导入名称的拼写、大小写是否一致
内容的提问来源于stack exchange,提问作者Matthew Weiner
相关产品推荐
相关产品推荐

