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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:57:45