😸

【超初心者向け】Firebaseでデバッグを始めてFirestoreに登録したデータが消えて絶望したあなたへ

2025/02/27に公開

辛いですよね。
こんにちは、ワニかず@40歳 出戻りエンジニアです。

私も絶望した一人なのですが、
Firebaseの起動時にオプションを設定しておく必要があった、
ということで、その手順などをまとめました。

オプション無しだと?

Firebase Emulatorは通常、メモリ上でのみデータを保持するため、エミュレータを停止すると全てのデータは消去されます。

つまり、以下のようなコマンドだけで起動した場合:

firebase emulators:start --only functions,firestore,auth

エミュレータを停止すると、その時点で:

  • Firestoreに登録したデータ
  • 作成した認証ユーザー
  • その他の状態

全てが失われます。

手順

Firebase Emulatorのデータをエクスポート/インポートのオプションを指定して
起動すると、データの消失を回避できます。

エクスポートとインポートを組み合わせた起動:

--import=./firebase-data --export-on-exit=./firebase-data

というオプションを指定して起動します。
具体的には、

firebase emulators:start --only functions,firestore,auth --import=./firebase-data --export-on-exit=./firebase-data --inspect-functions

とした場合、

  • functions, firestore, auth のエミュレータが起動
  • 起動時に firebase-data からデータをインポート
  • 終了時に firebase-data にデータをエクスポート
  • Cloud Functions のデバッグが可能 (--inspect-functions)

これで開発作業中のデータが保持され、かつCloud Functionsのデバッグも行える環境が整います。

このコマンドでは:

  • --import=./firebase-data: 起動時にデータをインポート
  • --export-on-exit=./firebase-data: 終了時に自動的にデータをエクスポート

注意点:

  • エクスポートディレクトリは事前に作成しておく必要はありません
  • エクスポートされるデータには、Firestore、Authentication、Realtime Databaseなどの状態が含まれます
  • --export-on-exitを使用すると、Ctrl+Cでエミュレータを正常終了した時のみエクスポートされます

これらのコマンドを使用することで、エミュレータのデータを永続化できます。

おしまいに

マイクラで全ロスしたときと同じような喪失感でした。

Discussion