web-dev-qa-db-ja.com

Firestore / Firebase Emulatorが実行されていません

ここにリストされているガイドを使用してローカルで関数をテストしようとしています https://firebase.google.com/docs/functions/local-emulator

私は最新のfirebase-toolsを使用してインストールしました

npm install -g firebase-tools

私のpackage.json実行していることを確認しました

"firebase-admin": "^7.3.0",
"firebase-functions": "^2.3.1",

を使用して関数を実行しようとすると

firebase emulators:start

それは私に以下の出力を与えます。 何が悪いのですか?

Starting emulators: ["functions"]
⚠  Your requested "node" version "8" doesn't match your global version "11"
✔  functions: Emulator started at http://localhost:5001
i  functions: Watching "[FUNCTIONS FOLDER PATH]" for Cloud Functions...
⚠  Default "firebase-admin" instance created!
⚠  Ignoring trigger "[FUNCTION NAME]" because the service "firebaseauth.googleapis.com" is not yet supported.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.
⚠  Ignoring trigger "[FUNCTION NAME]" because the Cloud Firestore emulator is not running.

etc.
etc.
etc.
i  functions: HTTP trigger initialized at http://localhost:5001/[APP NAME]/us-central1/[FUNCTION NAME]

[2019-05-15T21:43:52.436Z]  @firebase/database: FIREBASE WARNING:  
{"code":"app/invalid-credential","message":"Credential implementation provided to   
initializeApp() via the \"credential\" property failed to fetch a valid Google  
OAuth2 access token with the following error: \"Error fetching access token: Error  
while making request: getaddrinfo ENOTFOUND metadata.google.internal  
metadata.google.internal:80. Error code: ENOTFOUND\"."} 
12
siefix

同じ問題がありましたが、いくつか問題がありました

  1. firebase setup:emulators:firestoreを実行して、エミュレーターがインストールされていることを確認します

私の2番目の問題は、最初のFirebase構成が、説明したようにプロジェクトフォルダーではなくホームフォルダーに構成ファイルをインストールしたことでした [here] これは、プロジェクトにfirestore.rulesとfirestore.indexesがないことを意味していました。 jsonといくつかの構成設定。

firebase initを実行してこれらのファイルを生成します

これら2つのことを修正したら、うまくいきました。これがお役に立てば幸いです。

参考として、私のfirebase.jsonは次のようになります

{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "hosting": {
    "public": "dist",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  },
  "emulators": {
    "firestore": {
      "port": "5002"
    }
  }
}
15
Azure

Firebaseの設定を確認しても機能しない場合は、次のことを試してください。

  • firebase emulators:startを実行します。 OpenJDKをインストールするために表示されたエラー要求を確認します。
  • 関数がFirebase APIまたはGoogle APIと相互作用する場合は、管理者の認証情報を設定する必要があります。その方法をここで確認してください: https://firebase.google.com/docs/functions/local-emulator
  • 関数とファイアストアを同時にエミュレートする必要があるかもしれません。 firebase emulators:start --only functions,firestoreまたはfirebase serve --only functions,firestoreを使用します。
  • Pubsubはまだサポートされていないことに注意してください。 Sam Sternがコメントしたように、pub subがサポートされるようになりました。
10
Mario Orozco

Firebase.jsonファイルでfirestoreが適切に構成されていない可能性があります。これにより、エミュレータが起動しなくなります。

必要なのは、プロジェクトディレクトリでfirebase init firestoreを実行することです。これにより、firestoreルールとインデックスファイルが作成され、それに応じてfirebase.jsonが更新されます。

4
nikitakarpenkov

実際、このエラーは、ユーザーがデータベースなしでfirebaseプロジェクトを初期化したときに発生します。したがって、コマンドfirebase emulators:start --only databaseでは、「database.rules.json」ファイルと、firebase.jsonファイル内のデータベースの構成エントリが必要なため、データベースエミュレータを起動できません。したがって、firebase initコマンドでデータベースを初期化するのを忘れた場合は、firebase CLIコマンドを使用して、いつでも必要なときにFirebaseデータベースを追加できます。

firebase init database

次に、firebase emulators:start --only databaseを実行して、localserverでデータベースエミュレータを起動できます。

機能とデータベースの両方にエミュレータを使用する場合は、firebase serve --only functions,databaseを実行します

1

Firebase CLIのバージョン7.8.0以降(firebase-tools)には、実行するすべてのエミュレーターのセットアップに役立つ新しいコマンドfirebase init emulatorsがあります。

1
Sam Stern