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

TypeScript搭配Express.js配置路径别名后导入模块找不到报错

核心原因

你在tsconfig.json中配置的paths仅作用于TypeScript的编译期类型检查与路径解析,Node.js原生运行时(包括ts-node/ts-node-dev的默认运行逻辑)不识别该别名配置,因此会抛出模块找不到的错误。


需要补充的配置

1. 必须配置baseUrl参数

paths配置需要和compilerOptions下的baseUrl配合生效,请先确认你的tsconfig.json的compilerOptions中已添加正确的baseUrl配置,示例:

{
  "compilerOptions": {
    "baseUrl": "./", // 路径对应tsconfig.json所在的项目根目录
    "paths": {
      "@/lib/*" : ["src/lib/*"],
      "@/routes/*": ["src/routes/*"],
      "*": ["node_modules/*"]
    }
  }
}

如果你的baseUrl配置为./src,则paths对应的路径需要改为"@/lib/*" : ["lib/*"],和baseUrl的路径保持匹配。

2. 开发环境(直接运行TS代码,使用ts-node/ts-node-dev)

安装tsconfig-paths依赖,用于运行时解析路径别名:

npm install -D tsconfig-paths

修改你的启动命令,增加注册tsconfig-paths的参数:

  • 用ts-node启动:ts-node -r tsconfig-paths/register src/你的入口文件.ts
  • 用ts-node-dev启动:ts-node-dev -r tsconfig-paths/register src/你的入口文件.ts

3. 生产环境(编译为JS后运行)

编译后的JS文件中仍然保留@别名路径,Node.js依然无法识别,需要在编译阶段把别名替换为实际的相对路径,可使用tsc-alias工具实现:
安装依赖:

npm install -D tsc-alias

修改package.json中的编译命令,在tsc编译后执行tsc-alias替换路径:

{
  "scripts": {
    "build": "tsc && tsc-alias"
  }
}

之后执行npm run build得到的编译产物就可以直接用Node运行了。


内容的提问来源于stack exchange,提问作者Adharsh M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:45:03