You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:45:30