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

Heroku部署Node.js+TypeScript项目时找不到@types/jest类型定义

解决Heroku部署Node.js+TypeScript项目时找不到@types/jest的问题

核心原因

本地构建正常是因为你安装了devDependencies里的@types/jest,但Heroku默认在生产环境不会安装devDependencies。而你的主tsconfig.json中compilerOptions.types包含了jest,即使生产构建用的tsconfig.build.json排除了测试文件,它依然继承了主配置的types设置,导致编译时尝试寻找jest类型定义但找不到。

解决方案

1. 修改生产构建用的tsconfig.build.json

在tsconfig.build.json中覆盖types配置,只保留生产环境需要的类型(比如node),移除jest:

{
  "extends": "./tsconfig.json",
  "exclude": ["**/*.test.ts", "**/__tests__/*"],
  "compilerOptions": {
    "types": ["node"]
  }
}

这样生产构建时就不会再尝试加载jest的类型定义,从根源避免报错。

2. 修正Heroku postbuild的依赖安装命令(备选)

你当前的postbuild命令用了NPM_CONFIG_PRODUCTION=false,但这是npm的参数,对于yarn应该用--production=false来强制安装所有依赖(包括devDependencies):

"heroku-postbuild": "cd client && yarn install && yarn build && cd .. && cd backend && yarn install --production=false && yarn build"

不过这个方案不推荐,因为会把开发依赖也打包到生产环境,增加部署体积,优先选择第一种方案。

3. 额外检查:确认tsconfig.build的继承关系

确保tsconfig.build.json确实正确继承了主配置,并且exclude规则生效,不会包含测试文件,避免编译时引入需要jest类型的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:18:42