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

Docker部署Node应用至Heroku失败:无法找到模块'/app/heroku'

解决Docker化Node.js应用部署到Heroku后的H10错误与模块找不到问题

核心问题分析

  • 错误Cannot find module '/app/heroku'源于Heroku Node.js buildpack与Docker部署逻辑冲突:默认Node buildpack会忽略你的Docker配置,按照自身规则尝试启动应用,导致执行了错误的启动命令。
  • 直接用node ./src/index.ts启动无效,Node本身不支持直接运行TypeScript文件,必须先编译为JS或用ts-node解析。

分步解决方案

1. 切换Heroku Buildpack为Container类型

部署Docker应用时,Heroku必须使用Container buildpack,而非默认的Node.js buildpack:

  • 命令行操作:
    heroku buildpacks:set container -a your-app-name
    
  • 控制台操作:进入应用Settings → Buildpacks,移除Node.js buildpack,添加Container buildpack。

2. 修复TypeScript文件的启动方式

Node无法直接执行.ts文件,二选一即可:

方案A:提前编译TypeScript为JavaScript

  1. 在package.json中添加编译脚本和TypeScript依赖:
    {
      "scripts": {
        "build": "tsc",
        "start": "node ./dist/index.js"
      },
      "devDependencies": {
        "typescript": "^5.x"
      }
    }
    
  2. 新增tsconfig.json配置编译输出(示例):
    {
      "compilerOptions": {
        "outDir": "./dist",
        "target": "ES2020",
        "module": "CommonJS"
      },
      "include": ["src/**/*"]
    }
    
  3. 修改Dockerfile,加入编译步骤:
    FROM node:20 AS base 
    WORKDIR /app
    COPY package.json package-lock.json ./
    RUN npm install
    COPY . .
    RUN npm run build
    CMD ["node", "./dist/index.js"]
    

方案B:使用ts-node直接运行

  1. 在package.json中添加ts-node依赖和启动脚本:
    {
      "scripts": {
        "start": "ts-node ./src/index.ts"
      },
      "dependencies": {
        "ts-node": "^10.x",
        "typescript": "^5.x"
      }
    }
    
  2. 修改Dockerfile的启动命令:
    FROM node:20 AS base 
    WORKDIR /app
    COPY package.json package-lock.json ./
    RUN npm install
    COPY . .
    CMD ["npx", "ts-node", "./src/index.ts"]
    

3. 清理无用依赖

从package.json的dependencies中移除heroku包——这是Heroku CLI工具,应用运行完全不需要它。

验证部署

重新触发GitHub Actions部署,完成后查看Heroku日志:

heroku logs --tail -a your-app-name

确认日志中出现服务启动成功的信息(比如GraphQL Yoga监听4000端口),再访问应用即可正常打开。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:50:01