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

部署Express+React项目到Heroku时tsc命令未找到的问题咨询

解决Heroku部署时tsc: not found的问题

我来帮你拆解这个问题,一步步理清原因和解决方案:

为什么会出现tsc: not found?

这个错误的核心原因其实很直白:

  • 我们通常会把typescript包安装在devDependencies里(毕竟生产环境不需要编译器),但Heroku在默认的生产环境部署流程中,会执行yarn install --production,直接跳过devDependencies的安装。这就导致你的服务器上根本没有tsc这个命令可用。
  • 再看你服务端的start脚本:tsc & node .,你试图在启动服务时实时编译TypeScript代码,但生产环境下既没有全局安装的tsc,本地node_modules里也没有(因为dev依赖没装),自然会报错找不到命令。

postinstall应该配置在哪个package.json?

最佳实践是配置在服务端的package.json中,因为编译服务端的TypeScript代码是服务端项目自身的责任,这样结构更清晰。当然也可以在根目录的package.json里统一处理,但需要确保脚本能正确进入服务端目录执行编译。

方案1:服务端package.json配置postinstall

修改服务端的package.json脚本,让它先在postinstall阶段完成编译,启动时直接运行编译好的文件:

"scripts": {
  "build": "tsc",
  "start": "node dist/index.js", // 直接运行编译后的产物,不要再实时编译
  "dev": "tsc -w & nodemon .",
  "postinstall": "yarn build"
}

然后需要告诉Heroku安装dev依赖(因为tsc在devDependencies里),设置环境变量:

heroku config:set YARN_PRODUCTION=false

这样Heroku会安装所有依赖,包括TypeScript,postinstall就能顺利执行编译。

方案2:根目录package.json配置postinstall

如果想在根目录统一管理构建流程,修改根目录的package.json:

"scripts": {
  "startClient": "react-scripts start",
  "buildClient": "react-scripts build",
  "build": "react-scripts build",
  "start": "cd server && yarn start",
  "devServer": "cd server && yarn dev",
  "postinstall": "cd server && yarn install && yarn build"
}

同样需要设置YARN_PRODUCTION=false,确保服务端的devDependencies被安装。

可以直接使用npx tsc吗?推荐吗?

可以用,但有几个注意点:

  • 如果typescript是服务端的devDependencies,那必须让Heroku安装dev依赖(也就是上面提到的设置YARN_PRODUCTION=false),否则npx也找不到tsc的包(因为node_modules里没有)。
  • 如果把typescript装到服务端的dependencies里,npx能直接找到,但这样会把编译器打包到生产环境,增加部署包的体积,不是最佳实践。

不推荐在生产环境的start脚本里用npx tsc & node .这种实时编译的方式:生产环境应该预编译代码,而不是每次启动服务都重新编译,既浪费启动时间,也容易因为编译过程出现意外导致服务启动失败。更好的方式是在postinstall阶段完成编译,启动时直接运行编译好的JS文件。

额外的优化方案

如果你不想让Heroku安装dev依赖,还可以:

  1. 本地提前编译服务端代码,把server/dist目录提交到Git仓库,这样Heroku部署时直接运行dist里的文件就行,不需要编译。
  2. 使用Heroku的Node.js buildpack,它能自动识别TypeScript项目并完成编译,不过需要确保你的项目结构符合它的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:27:42