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

Heroku构建Node.js+TypeScript应用时出现TS2307错误

Heroku部署TypeScript项目时模块找不到的解决方案

看起来你遇到了一个典型的「本地正常运行、Heroku构建报错」的问题,我帮你梳理下可能的原因和对应解决办法:

核心问题分析

本地编译、测试全正常,但Heroku上TypeScript编译时找不到domain/models/account相关模块,本质是Heroku构建环境的文件或配置和本地存在差异,常见的几个触发点如下:

1. 缺失的模块文件未被Git追踪

Heroku只会部署你提交到Git仓库的文件,如果src/domain/models/account.ts没被Git追踪(比如被.gitignore排除),那Heroku服务器上根本不存在这个文件,自然会报错:

  • 本地执行命令 git ls-files | grep account.ts,检查输出里是否包含src/domain/models/account.ts
  • 打开项目根目录的.gitignore文件,确认没有忽略src/domain目录,也没有误写规则排除了该模块文件

2. 文件名大小写不匹配

Windows系统不区分文件名大小写,但Heroku用的是Linux系统,大小写严格敏感。如果你的导入路径里的文件名和实际文件大小写不一致,就会出现本地正常、Heroku报错的情况:

  • 比如实际文件是Account.ts,但导入写的是../../../../domain/models/account,本地能识别,但Linux环境下会直接找不到
  • 逐一核对所有报错文件里的导入路径,确保和实际文件名的大小写完全一致

3. TypeScript配置的include/exclude字段错误

如果tsconfig.json的include数组没有包含src/domain目录,TypeScript编译时会直接忽略这些文件,导致找不到模块:

  • 打开tsconfig.json,确认include数组里有"src/**/*"(表示包含src下所有层级的文件)
  • 检查exclude字段,确保没有意外写入src/domain这类规则,排除了需要编译的核心文件

4. 多层相对路径易出错,建议配置baseUrl

像../../../../这类多层相对路径很容易写错,建议在tsconfig.json里配置baseUrl简化导入:

  • 在tsconfig.json的compilerOptions中添加:
    "baseUrl": "./src"
    
  • 之后把所有相关导入路径改成domain/models/account,既简化了写法,也能减少路径写错的概率

验证步骤

修改完成后,先在本地执行 rm -rf dist && tsc 确认编译正常,然后提交所有修改到Git,再执行 git push heroku master 重新部署即可。

内容的提问来源于stack exchange,提问作者Émerson Felinto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:27:32