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

部署TypeScript Express.js应用至Heroku遇Exit status 127错误求助

解决Heroku部署Express+TypeScript应用崩溃问题

核心问题分析

Exit status 127(tsc未找到)

Heroku生产环境默认仅安装package.json中dependencies下的包,若typescript被放在devDependencies里,部署阶段不会被安装,导致执行tsc命令时找不到可执行文件。

Exit status 1(npx装错tsc包)

直接使用npx tsc时,若本地无可用的tsc,npx会自动安装第三方的tsc包(版本2.0.4),这并非官方TypeScript编译器,因此触发报错。

H10错误(App crashed)

这是应用启动失败的连锁反应,只要解决tsc的构建问题,应用能正常启动后,H10错误会自动消失。

具体解决方法

方法1:将typescript移至dependencies

修改package.json,把typescript从devDependencies移到dependencies字段:

{
  "dependencies": {
    "typescript": "^x.x.x",
    // 其他项目依赖...
  }
}

提交修改后的代码到Heroku,部署时会自动安装typescript,tsc命令即可正常执行。

方法2:指定本地tsc路径

在build命令中直接调用node_modules/.bin下的tsc,确保使用项目本地安装的编译器:

{
  "scripts": {
    "build": "./node_modules/.bin/tsc --build tsconfig.json",
    "prestart": "npm run build",
    "start": "node dist/index.js" // 替换为你实际的编译后入口文件路径
  }
}

注意:此方法需确保typescript在dependencies中,或让Heroku安装dev依赖。

方法3:让Heroku临时安装dev依赖

通过设置环境变量,让Heroku在部署阶段安装devDependencies:

heroku config:set NPM_CONFIG_PRODUCTION=false

或者添加heroku-postbuild脚本,完成构建后清理dev依赖:

{
  "scripts": {
    "heroku-postbuild": "npm install --only=dev && npm run build && npm prune --production"
  }
}

此方式会先安装dev依赖完成构建,再移除dev依赖以减小部署体积。

修正npx命令(不推荐,仅作备选)

若坚持使用npx,需明确调用官方typescript包:

{
  "scripts": {
    "build": "npx typescript --build tsconfig.json"
  }
}

同样需确保typescript在项目依赖中,避免npx安装错误的包。

验证步骤

  1. 本地执行npm install确保依赖安装完整
  2. 运行npm run build和npm start,确认应用能正常启动
  3. 提交修改后的代码到Heroku,查看部署日志确认构建成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:34:53