Nest.js项目GitHub Action部署Firebase时找不到firebase.json
解决Firebase Action部署报错:Not in a Firebase app directory
本地CLI可正常部署Nest.js应用到Firebase,但GitHub Action执行失败,报错:
Error: Not in a Firebase app directory (could not locate firebase.json)
firebase.json实际位于apps/webhook-broadcaster/firebase.json路径下,我的GitHub Action配置如下:
name: Firebase Deployment on: push: branches: - main jobs: build: name: Build and Deploy runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v2 - name: Setup pnpm uses: pnpm/action-setup@v2 with: version: "8.15.4" - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: "v20.8.0" cache: "pnpm" - name: Install Dependencies run: pnpm install - name: Install Nest CLI run: pnpm install --global @nestjs/cli - name: Build run: | cd apps/webhook-broadcaster pnpm install pnpm run build - name: Archive Production Artifact uses: actions/upload-artifact@v2 with: name: build path: apps/webhook-broadcaster/dist deploy: name: Deploy to Firebase Hosting needs: build runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v2 - name: Download Artifact uses: actions/download-artifact@v2 with: name: build path: apps/webhook-broadcaster/dist - name: Deploy to Firebase Hosting uses: w9jds/firebase-action@master with: args: deploy --only hosting env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_WEBHOOK_BROADCASTER }}
问题原因
Firebase Action默认在仓库根目录执行命令,无法自动识别子目录中的firebase.json文件,导致报错。
修复方案
方案1:指定部署工作目录
在Deploy步骤中,给w9jds/firebase-action添加working-directory参数,指向firebase.json所在的子目录:
- name: Deploy to Firebase Hosting uses: w9jds/firebase-action@master with: args: deploy --only hosting working-directory: apps/webhook-broadcaster env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_WEBHOOK_BROADCASTER }}
方案2:合并Build与Deploy步骤(简化流程)
无需拆分两个Job,直接在Build完成后切换到子目录部署,减少Artifact上传下载的冗余步骤:
name: Firebase Deployment on: push: branches: - main jobs: build-and-deploy: name: Build and Deploy runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v2 - name: Setup pnpm uses: pnpm/action-setup@v2 with: version: "8.15.4" - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: "v20.8.0" cache: "pnpm" - name: Install Dependencies run: pnpm install - name: Install Nest CLI run: pnpm install --global @nestjs/cli - name: Build run: | cd apps/webhook-broadcaster pnpm install pnpm run build - name: Deploy to Firebase Hosting uses: w9jds/firebase-action@master with: args: deploy --only hosting working-directory: apps/webhook-broadcaster env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_WEBHOOK_BROADCASTER }}
额外检查项
- 确保
checkout步骤拉取了完整仓库代码,未忽略子目录 - 确认
firebase.json中的public字段配置正确,需指向Build生成的dist目录(如"public": "dist",因为部署时已在webhook-broadcaster目录下执行)
内容的提问来源于stack exchange,提问作者dweller
相关产品推荐
相关产品推荐

