🙌
Firebaseにデプロイが反映されなくなったが、package.jsonのmainが原因だった件
状況
- Firebase Functionに、新しく書いた関数のデプロイが反映されない
- デプロイ自体はエラーなく実行できるているが、Functionsを見ても新しく書いた関数が追加されていない
- エラーは特に出ていないので原因不明で発狂。ChatGPTもお手上げ。
環境
- フロント : TypeScript * React(Vite)
- バック : TypeScript * Firebase
ざっくりディレクトリ構成
- vite-project
- function //Firebase周り
- common/schema //フロントでもバックでも使う型を定義
- src //フロントのコード
- App.tsxなど
原因と対策
ざっくり原因
- ディレクトリ構成を変えたせいで、Firebaseが参照すべきファイルのパスが変わり、更新されないファイルをデプロイしていた
- functions直下のpackage.jsonの"main"のパス指定先が自動で更新されていなかった
該当箇所
before
"main": "lib/functions/index.js",
だった気がする(うろ覚え)
after
"main": "lib/functions/src/index.js",
補足
- lib配下のファイルは、build時に自動生成される
- TypeScriptをJavaScriptにコンパイルしてFirebaseで読み込める形にしてるっぽい
- 最終的に読み込むファイルがmainで規定されており、ここのパス指定が変わるとデプロイは成功しても最新のコードじゃない場合がある
- 同じような内容のindex.jsが複数自動生成されることもあるようなので要注意
足どり
- 変えたのが全く反映されないので、Firebaseが読み込んでないのだろうと予想
- TypeScriptからJavaScriptへのコンパイル時か、コンパイルしたJavaScriptのデプロイ時のどちらかで何か起きてるのでは?
- コンパイルの方はいじっても何も変わらなかったので、デプロイの参照元を見た。
- 実際はこんなスマートに行かなくて、体感5時間くらい溶かした
Discussion