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

使用GitHub Actions部署Azure App Service Node API时遇package.json找不到问题

问题分析

你的部署流程存在两个核心问题:

  1. 构建产物上传错误:构建阶段你上传的是整个仓库根目录(path: .),而非api子文件夹的内容。这导致部署到Azure后,站点根目录下仍保留api子文件夹,应用启动时的工作目录是站点根目录,代码里的../package.json自然找不到(因为站点根目录的上一级不存在)。
  2. .deployment文件未生效:azure/webapps-deploy动作不会读取仓库根目录的.deployment配置,该文件仅在FTP/本地Git部署等场景下生效,所以你的project = api设置没有起到作用。
解决方案

推荐采用第一种方案,直接上传api文件夹的内容,确保部署后的目录结构与本地开发一致:

方案1:修改构建阶段的产物上传路径

更新GitHub Actions YAML中build任务的Upload artifact步骤,将path改为api/:

- name: Upload artifact for deployment job
  uses: actions/upload-artifact@v2
  with:
    name: node-app
    path: api/

这样部署后,Azure App Service的站点根目录就是原仓库api文件夹的内容,代码里的路径引用(比如./package.json)会正常工作,不会出现向上级目录查找的错误。

方案2:调整部署目标路径并设置启动命令

如果需要保留上传整个仓库的逻辑,可修改部署步骤的package路径为./api,同时配置Azure的启动命令确保在api目录下运行应用:

  1. 更新部署步骤:
- name: 'Deploy to Azure Web App'
  id: deploy-to-webapp
  uses: azure/webapps-deploy@v2
  with:
    app-name: 'hobbeez'
    slot-name: 'Production'
    publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_16C52153CB9348578BF747E038921ED6 }}
    package: ./api
  1. 配置Azure启动命令:
    进入Azure门户的App Service -> 配置 -> 常规设置,在「启动命令」中填入npm start(或你的实际启动命令,比如node server.js),确保应用在api目录上下文启动。
额外检查

如果上述方案仍未解决问题,检查你的Node.js代码中是否存在硬编码的../package.json引用,本地运行正常是因为本地开发时工作目录是api文件夹,但部署后工作目录变化导致路径错误,这种情况需要将代码中的路径修正为./package.json。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:03:24