如何为新建Heroku应用添加Dynos?部署Node.js应用遇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

