Firebase Emulator Suite起動時に、Storage や pubsub関連のエラーが発生した際の、対応記録です。
1.Storage関連のエラー
firebase init emulators
コマンドで内容を確認した内容は次の通り。
その後、firebase emulators:start
コマンド実行時に、以下のエラーが発生した。
エラー部分の抜粋は以下の通り。
! database: Did not find a Realtime Database rules file specified in a firebase.json config file. The emulator will default to allowing all reads and writes. Learn more about this option: https://firebase.google.com/docs/emulator-suite/install_and_configure#security_rules_configuration.
i database: Database Emulator logging to database-debug.log
Error: Cannot start the Storage emulator without rules file specified in firebase.json: run ‘firebase init’ and set up your Storage configuration
調べたところ、FirebaseのStorage emulatorを使用するためには、Storageのセキュリティルールを定義する必要があります。これは、Firebaseプロジェクトの設定ファイルであるfirebase.json
に記述されている必要がある、とのこと。
そこで、以下の対応をしました。
(1)firebase.jsonファイルを開く
Firebaseプロジェクトのルートにあるfirebase.json
ファイルを開きます。
(2)Storageのルールを指定する
Storage emulatorのルールをfirebase.json
ファイルに追加する必要があります。ルールファイルが既に存在する場合(例えばstorage.rules
という名前で)、次のように指定します
上記を、以下の様に修正した。
修正後:
”storage”: {
”port”: 9199,
”rules”: “storage.rules”
},
(3)ルールファイルを作成する
上記で指定した「storage.rules」というファイル(Storage emulatorのルール)をfirebase.json
ファイルに追加したものの、そのファイルを、まだ作っていないので、以下の内容で新規作成します。
(4)Emulator Suiteを再起動する
変更を行った後、Firebase Emulator Suiteを再起動します。
> firebase emulators:start
2.pubsub関連のエラー
上記手順1の対応により、Storage関連のエラーは解消しましたが、
(再起動時に)pubsub関連のエラーが発生しました。
! pubsub: Port 8085 is not open on localhost (127.0.0.1), could not start Pub/Sub Emulator.
! pubsub: To select a different host/port, specify that host/port in a firebase.json config file:
{
// …
“emulators”: {
“pubsub”: {
“host”: “HOST”,
“port”: “PORT”
}
}
}
Error: Could not start Pub/Sub Emulator, port taken.
調べてみると、原因は、Firebase初期化時に指定した、Pub/Subエミュレータ用のポート番号8085が既に使用されているためでした。
そこで、firebase.jsonファイルのpubsubの部分のポートについて、以下の通り修正しました。
修正後:
“pubsub”: {
“host”:”localhost”,
“port”: 6088
},
一応、次のコマンドで、6088が未使用か確認しました。
> netstat -ano | findstr 6088