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

如何为新建Heroku应用添加Dynos?部署Node.js应用遇404错误

Bitbucket Pipeline部署Heroku时出现404错误的排查与解决

问题场景

我正尝试通过Bitbucket Pipeline将Node.js应用部署到Heroku,推送代码时触发流水线,流水线配置如下:

image: node:18

pipelines:
  branches:
    dev:
      - step:
          name: Build Application - (Dev)
          script:
            - cd backend
            - npm install
            - npm run build

      - step:
          name: Create Artifact (Dev)
          script:
            - cd backend
            - git archive --format=tar.gz dev -o application.tar.gz
          artifacts:
            - backend/application.tar.gz

      - step:
          name: Deploy to Heroku (Dev)
          deployment: Staging
          script:
            - pipe: atlassian/heroku-deploy:2.3.0
              variables:
                HEROKU_API_KEY: $HEROKU_API_KEY
                HEROKU_APP_NAME: $HEROKU_APP_NAME_TEST
                # JWT_SECRET_KEY: $JWT_SECRET_KEY
                ZIP_FILE: backend/application.tar.gz
                WAIT: "true"
          caches:
            - node

在最后一步“Deploy to Heroku (Dev)”中出现如下错误:

Status: Downloaded newer image for bitbucketpipelines/heroku-deploy:2.3.0
WARNING: New version available: atlassian/heroku-deploy '2.3.0' to '2.4.0'
INFO: Creating Heroku sources...
INFO: Uploading binary sources from backend/application.tar.gz
INFO: Starting a new build in Heroku...
✖ Failed to upload binary sources. Expected HTTP Status 201, got 404. Error message: {"id":"not_found","message":"The requested API endpoint was not found. Are you using the right HTTP verb (i.e. GET vs. POST), and did you specify your intended version with the Accept header?"}

我猜测该错误是由于应用未配置Dynos导致的,但找不到添加基础类型Dynos的选项。用于Bitbucket部署变量的Heroku API Key是从Heroku账户的“Authorizations”创建,并已配置到Bitbucket部署变量中。


排查与解决步骤

  • 升级Heroku部署管道版本
    错误提示有新版本2.4.0,旧版本可能存在Heroku API端点兼容问题。把管道配置中的pipe: atlassian/heroku-deploy:2.3.0替换为pipe: atlassian/heroku-deploy:2.4.0,重新触发流水线测试。

  • 验证Heroku应用与权限
    确认$HEROKU_APP_NAME_TEST对应的应用存在于你的Heroku账户下,且API Key授权账户拥有该应用的部署权限。本地用Heroku CLI执行以下命令验证:

    heroku login -i
    heroku apps:info -a YOUR_APP_NAME_TEST
    

    若能正常返回应用信息,说明权限无问题。

  • 配置基础Dynos(CLI/界面两种方式)
    若确实需要配置Dynos,找不到界面入口的话,直接用Heroku CLI执行:

    heroku ps:scale web=1 -a YOUR_APP_NAME_TEST
    

    这条命令会启动1个基础Web Dyno。或者在Heroku应用的Resources标签页,找到“Dynos”区域,点击“Configure Dynos”,设置Web进程数量为1。

  • 检查归档文件完整性
    确认backend/application.tar.gz包含Heroku启动所需的核心文件(如package.json、Procfile)。在Create Artifact步骤的script末尾添加命令验证:

    tar -tf backend/application.tar.gz
    

    确保根目录下存在这些关键文件。

  • 简化部署流程(跳过归档步骤)
    归档步骤可能导致文件结构异常,尝试去掉Create Artifact步骤,直接在Deploy步骤中部署构建后的文件:

    - step:
        name: Deploy to Heroku (Dev)
        deployment: Staging
        script:
          - cd backend
          - npm install
          - npm run build
          - pipe: atlassian/heroku-deploy:2.4.0
            variables:
              HEROKU_API_KEY: $HEROKU_API_KEY
              HEROKU_APP_NAME: $HEROKU_APP_NAME_TEST
              WAIT: "true"
        caches:
          - node
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:23:17