Vite无法解析.d.ts文件导入的问题求助
解决Vite + TypeScript导入
.d.ts类型文件的冲突问题 这里给你几个直接可行的解决思路,按优先级排序:
1. 调整TypeScript配置适配Vite的模块解析
在项目根目录的tsconfig.json里修改compilerOptions,让TS和Vite的解析逻辑对齐:
{ "compilerOptions": { "moduleResolution": "bundler", // 核心:用打包器的解析规则,适配Vite "allowImportingTsExtensions": false, // 禁止直接导入带.ts/.d.ts后缀的文件 "baseUrl": "./", // 根据项目结构设置根路径,可选 "paths": { "@/*": ["src/*"] } // 路径别名,可选,方便导入 }, "include": ["src/**/*.ts", "src/**/*.d.ts"] // 确保.d.ts文件被TS识别 }
改完之后,用import type { StateDefinition } from '../type'导入,Vite会通过打包器解析找到type.d.ts,TS也不会报错。
2. 给类型声明文件加一个转发入口
如果不想改配置,可以在type.d.ts同目录下新建type.ts文件,内容只做类型导出:
// type.ts export type { StateDefinition } from './type.d.ts';
之后直接导入../type就行,Vite能找到.ts文件,TS也能正确解析类型。
3. 配置Vite的扩展名解析规则
在vite.config.ts里添加扩展名优先级,让Vite优先查找.d.ts文件:
import { defineConfig } from 'vite'; export default defineConfig({ resolve: { extensions: ['.d.ts', '.ts', '.js', '.jsx', '.json'], // 把.d.ts放在前面 }, });
同时确保TS配置的moduleResolution是bundler,这样无扩展名导入时Vite会先找.d.ts,TS也不会因为导入带后缀的文件报错。
问题根源
- Vite默认不会自动识别无扩展名的
.d.ts文件,必须明确配置解析规则或通过打包器模块逻辑关联 - TypeScript的设计逻辑里,
.d.ts是类型声明文件,应该通过模块解析自动关联,而非直接导入带.d.ts后缀的文件,所以直接导入会报错
内容的提问来源于stack exchange,提问作者shuaige
相关产品推荐
相关产品推荐

