Firebase関数をローカルでテストしたい。これらの関数は、firestoreクエリを作成します。
エミュレーター_firebase emulators:start
_を起動し、クライアントでfirebase.functions().useFunctionsEmulator('http://localhost:5001')
を使用します。
クライアントで関数を呼び出すと、関数がうまく機能します。 Firestoreエミュレータ内でデータを読み書きできます。
問題 :
Firestoreエミュレータのデータをクライアント内で直接読みたいのですが、
_firebase.firestore().collection('tests').get().then(tests => {
console.log( tests.docs.map(test=>test.map) )
})
_
しかし、クライアント内でfirestoreエミュレーターを設定する方法が見つかりません。
ここで私が試したこと:
1)Firestoreの設定
_firebase.firestore().settings({
Host:'http://localhost:8080',
ssl:false
})
_
結果:
クライアントコンソール内に@firebase/firestore: Firestore (6.3.5): Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds.
が表示されます。
Httpリクエストが「見つかりません」を返す
2)firebaseConfig内にエミュレータのURLを設定します
_var firebaseConfig = {
// ...
databaseURL: "http://localhost:8080",
// ...
}
firebase.initializeApp(firebaseConfig)
_
この場合、リモートサーバー( https://firestore.googleapis.com。 。)が要求されます。
だから私はこれらの2つのケースの1つをセットアップしたい:
1)関数エミュレーター内のリモートFirestoreの使用
OR
2)クライアントコード内でローカルのFirestoreエミュレータを使用します。
誰かがすでにこれを行っていますか?
わかりました、それを行う方法を見つけました:
1)関数エミュレータをローカルで起動します。
set GOOGLE_APPLICATION_CREDENTIALS=./privatekey.json && firebase serve --only functions
2)次にクライアント側:
if (process.env.NODE_ENV === 'development') {
firebase.functions().useFunctionsEmulator('http://localhost:5001')
}