web-dev-qa-db-ja.com

Cloud Functionsをローカルでテストすると、Cloud Firestoreエミュレーターが実行されない

Cloud Firestoreからデータを読み取るいくつかのCloud Functionsを実装しようとしています。これらをローカルでテストしたいのですが、Cloud Firestoreエミュレータを実行できません。私の想定では、問題がそこにあるということですが、それはどこか他の場所にあるかもしれません-その場合は、私に知らせてください。

これが私の機能です:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin'

admin.initializeApp()

//Functions to fetch the documents in the user collection and send them to the client.
export const getUserDocs = functions.https.onRequest((request, response) => {
    admin.firestore().doc('/Users/{documentId}').get()
    .then(snapshot => {
        const data = snapshot.data()
        response.send(data)
    })
    .catch(error => {
        response.status(500).send(error)
    })
})

これは、コマンドfirebase serve --only functionsを実行すると発生するエラーです。

Carlo@Carlos-Air-2 functions % firebase serve --only functions
⚠  Your requested "node" version "8" doesn't match your global version "13"
✔  functions: functions emulator started at http://localhost:5000
i  functions: Watching "/Users/Carlo/app/functions" for Cloud Functions...
✔  functions[getUserSports]: http function initialized (http://localhost:5000/app/us-central1/getUserSports).
i  functions: Beginning execution of "getUserSports"
⚠  functions: The Cloud Firestore emulator is not running, so calls to Firestore will affect production.
⚠  External network resource requested!
   - URL: "http://179.252.163.233/computeMetadata/v1/instance"
 - Be careful, this may be a production service.
⚠  External network resource requested!
   - URL: "http://metadata.google.internal./computeMetadata/v1/instance"
 - Be careful, this may be a production service.
i  functions: Finished "getUserSports" in ~9s

私はもう一度ゼロから始めて、アンインストールと再インストールを試みましたが、成功しませんでした。 YouTubeのチュートリアルシリーズも視聴しましたが、なんらかの理由でコードが機能しません。

どんな助けでも大歓迎です。

3
carloregian

ローカルテストでFirebaseを実行しようとすると、次のエラーが発生しました。

Cloud Firestoreエミュレータが実行されていないため、Firestoreへの呼び出しは本番環境に影響します。

私が間違ったことは、FirestoreとFunctionsの両方を選択しなかったことです(画像を参照)。

次に、ローカルテストを開始するために使用できるいくつかのコマンドがあります。

  1. firebase serve 2 .firebase serve-関数のみ
  2. firebase emulators:start --only = functions
  3. firebaseエミュレータ:開始

最後のもの(#4)は私のために問題を解決しました。

enter image description here

0
Nelles