はじめに
GitHub Actions から Next.js アプリを Firebase Hosting + Functions にデプロイしたとき、「webframeworks を有効にしろ」と言われて止まったので、解決方法した方法をまとめます。
問題
CI のデプロイステップで以下のエラーが出て止まる。
Error: Cannot deploy a web framework from source because the experiment webframeworks is not enabled.
To enable webframeworks run firebase experiments:enable webframeworks
Firebase CLI が「これは Next.js みたいな Web フレームワークだ」と検知したのに、必要な実験フラグが OFF のまま、という状態っぽい。
解決方法
Firebase CLI に webframeworks を有効にした状態でデプロイしました。
GitHub Actions なら、デプロイ手順で環境変数を足すだけ
- name: Deploy to Firebase Hosting + Functions
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
FIREBASE_CLI_EXPERIMENTS: webframeworks # ← これを足す
run: firebase deploy --only hosting,functions --token "$FIREBASE_TOKEN"
ローカルで一度だけ有効化するなら
firebase experiments:enable webframeworks
もしくはコマンド前に FIREBASE_CLI_EXPERIMENTS=webframeworks firebase deploy ... と付ける。
これで Next.js のデプロイが通るようになりました。
おわりに
Firebase CLI には「実験フラグ」という、正式リリース前の機能を一時的に有効化する仕組みがあるらしく、FIREBASE_CLI_EXPERIMENTS=webframeworks は、Next.js などの Web フレームワークを検知し、SSR を Functions に変換して Hosting に配置する一連の処理を有効にするフラグらしです。
今夏は、CI では環境変数を足す、ローカルでは firebase experiments:enable webframeworks を一度実行する、のどちらかで解決できました。
参考
リンク付きでエラー出してくれた。サンクス。