2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GitHub Actions】ReactアプリをFirebaseにデプロイしたら画面が真っ白になった

2
Posted at

はじめに

FirebaseにホスティングしているReactアプリをGitHub Actionsを使って自動でFirebaseにデプロイ出来るように設定しました。

デプロイは成功したものの、画面が真っ白になってしまい直すのに時間が掛かったので解決方法をまとめます。

前提と開発環境

FirebaseにホスティングしたReactアプリを前提に話を進めます。
ホスティングしているReactアプリの構成と開発環境は以下です。

  • React 19.2.8
  • Vite 8.3.0
  • Node.js 24.22.0
  • Firebase 12.19.0
  • @supabase/supabase-js 2.117.1

画面が真っ白になった原因

データベースとして利用しているSupabaseの環境変数ファイルに記述していたプロジェクトのURLが取得できていませんでした。そのためエラーで処理が止まってしまい、アプリにアクセスすると真っ白な画面が表示されました。

ブラウザのコンソールには以下のエラー出ていました。

Error: supabaseUrl is required.

SupabaseのプロジェクトのURLとAPIキーは.envファイルに記述しています。記述内容的にリモートリポジトリにpush出来ないので.gitignoreでGitから除外していました。

そのため、GitHub Actionsのランナー(仮想環境)に.envファイルが無い状態となり、アプリからSupabaseに接続出来なくなっていました。

解決方法

Repository Secrets

GitHubのRepository SecretsにSupabaseのプロジェクトのURLとAPIキーを追加しました。

Repository Secrets(リポジトリシークレット)には、APIキー、パスワード、トークンなどの機密情報を登録できます。Repository Secretsの設定画面には以下の手順で移動します。

  1. 対象のリポジトリ画面を開いた状態で「Setting」タブをクリック
  2. サイドバーにある「Secrets and variables」をクリック
  3. 「Actions」が出てくるのでクリック
  4. 「Actions secrets and variables」へ移動

スクリーンショット 2026-10-20 1.51.12.png

「Actions secrets and variables」の「Repository secrets」をクリックしてSupabaseのプロジェクトのURLとAPIキーを登録します。

スクリーンショット 2026-10-20 1.51.12.png

NameにそれぞれVITE_SUPABASE_URLとVITE_SUPABASE_PUBLISHABLE_KEYを入力し、SecretにSupabaseのURLとAPIキーを登録しました。

スクリーンショット 2026-10-20 2.02.04.png

登録が完了すると一覧画面に表示されます。Secretの中身は登録後に確認できないのでご注意ください。

スクリーンショット 2026-10-20 2.07.07.png

ワークフローからRepository secretsを参照する

Repository Secretsに登録したVITE_SUPABASE_URLとVITE_SUPABASE_PUBLISHABLE_KEYを参照します。

env:
  VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
  VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}

envはワークフローのジョブのステップ内で参照できる環境変数です。

Repository Secretsに登録したVITE_SUPABASE_URLとVITE_SUPABASE_PUBLISHABLE_KEYをワークフロー内で変数とすることでビルド時にSupabaseのプロジェクトのURLとAPIキーを渡すことができます。

私はビルドとデプロイのジョブを分けて書いているため、ビルドのジョブを以下のように修正しました。

jobs:
  build: # ビルド時の処理
    name: build
    runs-on: ubuntu-latest
    env: # Repository Secretsに登録したSupabaseのアクセス情報を環境変数として宣言
      VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
      VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v7
      - name: Setup Node.js
        uses: actions/setup-node@v7
        with:
          node-version-file: "package.json"
      - name: Install dependencies
        run: npm install
      - name: Run build
        run: npm run build
      - name: Upload build-artifacts
        uses: actions/upload-artifact@v7
        with:
          name: build-artifacts
          path: dist

envをステップの前に書くことでステップ内から変数として参照出来ます。ビルドの後にenvを書くとビルドするファイルに環境変数が渡されず、デプロイが成功してもSupabaseとの接続がエラーとなってしまいます。

長くなるので省きますが、Supabaseのアクセス情報を反映したdistディレクトリをactions/upload-artifactでデプロイジョブに渡してFirebaseへデプロイされれば完了です。

おわりに

実行環境が異なるので思わぬところに原因があってエラーが出てしまいました。
GitHub Actions中々難しい。。。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?