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

TypeScript服务端项目中tsconfig paths配置后无法导入自定义类型的问题求助

解决TypeScript自定义类型导入报错:Module has no exported member

我之前也踩过类似自定义类型导入的坑,结合你的项目情况,咱们一步步排查解决:

问题根源

你在index.d.ts里用declare module "express-custom-types"声明了模块,但导入时用的别名是@custom-types/express-custom-types。TypeScript解析时会把这两个当成完全不同的模块,自然找不到对应的ErrorBody导出成员。

解决方案

方案1:调整类型声明的模块名称,匹配别名路径

把自定义类型文件里的模块声明改成和导入时的别名一致:

// @types/express-custom-types/index.d.ts
declare module "@custom-types/express-custom-types" {
  export type ErrorBody = { type: string; status: number; message: string };
}

这样TypeScript就能直接把你导入的@custom-types/express-custom-types和这个声明对应起来。

方案2:调整paths配置,直接映射到目标模块名

如果你不想修改类型声明的模块名称,可以调整tsconfig.json的paths规则,让原生模块名指向你的自定义类型文件:

"compilerOptions": {
  // 保留其他配置...
  "baseUrl": "./",
  "paths": {
    "*": ["*"],
    "express-custom-types": ["@types/express-custom-types/index.d.ts"]
  }
}

之后在errorHandlers.ts里直接用原生模块名导入:

import { ErrorBody } from "express-custom-types";

额外必查项

  • 确保tsconfig.json的include配置包含@types目录,否则TypeScript不会扫描到你的自定义类型文件:
    "include": ["src/**/*", "@types/**/*"]
    
  • 如果用VS Code开发,记得重启TypeScript语言服务(快捷键Ctrl+Shift+P,选择"TypeScript: Restart TS Server"),缓存可能导致配置不及时生效。

验证

修改完成后,重新编译项目或者在编辑器里查看,若报错消失,说明配置已生效。

内容的提问来源于stack exchange,提问作者6991httam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:42:41