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

Github Actions部署Azure时无法找到package.json问题求助

GitHub Actions部署Azure Web应用时找不到package.json的解决方法

近期使用GitHub Actions部署Azure托管的Web应用,突然频繁在npm install阶段失败,提示无法找到package.json文件。此前该部署流程已成功执行数百次,代码未做任何变更,原Workflow配置及项目结构如下:

原Workflow配置

on:
  push:
    branches:
      - development
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up Node.js version
        uses: actions/setup-node@v1
        with:
          node-version: '18.x'
      #zips the repo, helps with transferring a large amount of files
      - name: Zip artifact for deployment
        run: zip release.zip ./* -r

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: node-app
          path: release.zip
  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'development'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v2
        with:
          name: node-app

      - name: unzip artifact for deployment
        run: unzip release.zip
      
      # removes the release.zip from being pushed to the final deployment
      - name: Remove File
        uses: JesseTG/rm@v1.0.0
        with:
          path: release.zip
      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'redacted'
          slot-name: 'redacted'
          publish-profile: ${{ redacted }}
          package: .

项目结构

--project:
---github/workflows
---public
---src
--.gitignore
--.prettierrc.cjs
--package-lock.json
--package.json
--server.js

问题原因

核心问题出在打包和解包的路径处理上:

  • 原打包命令zip release.zip ./* -r会将当前目录下的所有文件/文件夹以./前缀打包,解包时这些内容会被放到当前工作目录的子层级中,导致项目根文件(如package.json)不在npm install执行的根路径下。
  • 后续执行npm install时,自然找不到package.json文件。

解决步骤

方法1:修正打包命令

将打包命令改为直接打包当前目录的所有内容,避免路径前缀导致的层级问题:

zip -r release.zip * .[^.]*

*匹配所有非隐藏文件,.[^.]*匹配所有隐藏文件(如.gitignore),确保完整复制项目结构。

方法2:修正解包命令

在解包步骤添加-d .参数,强制将内容解压到当前工作目录根路径:

unzip release.zip -d .

方法3:简化Workflow(推荐)

将build和deploy合并为单个job,减少文件传输环节的潜在问题,同时提升部署效率:

on:
  push:
    branches:
      - development
  workflow_dispatch:

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    environment:
      name: 'development'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - uses: actions/checkout@v2

      - name: Set up Node.js version
        uses: actions/setup-node@v1
        with:
          node-version: '18.x'

      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present

      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'redacted'
          slot-name: 'redacted'
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
          package: .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:48:18