[Q&A]Firebase Emulator Suite起動時のStorage 、pubsub関連のエラー対応

1月 14, 2024
0 0
Read Time:1 Minute, 16 Second

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ファイルを開きます。

※該当箇所は、21行目~23行目の
修正前:

    “storage”: {
      ”port”: 9199
    },

の部分です。

(2)Storageのルールを指定する

Storage emulatorのルールをfirebase.jsonファイルに追加する必要があります。ルールファイルが既に存在する場合(例えばstorage.rulesという名前で)、次のように指定します

上記を、以下の様に修正した。
修正後:
 ”storage”: {
  ”port”: 9199,
  ”rules”: “storage.rules”
 },

(3)ルールファイルを作成する

上記で指定した「storage.rules」というファイル(Storage emulatorのルール)をfirebase.jsonファイルに追加したものの、そのファイルを、まだ作っていないので、以下の内容で新規作成します。

 rules_version = ‘2’;
 service firebase.storage {
  match /b/{bucket}/o {
   match /{allPaths=**} {
    allow read, write;
   }
  }
 }
※これは非常に開放的なルールであり、実際のプロジェクトではより厳密なルールを設定することをお勧めします。

(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

Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

コメントを残す