ここにリストされているガイドを使用してローカルで関数をテストしようとしています 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\"."}
同じ問題がありましたが、いくつか問題がありました
私の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"
}
}
}
Firebaseの設定を確認しても機能しない場合は、次のことを試してください。
firebase emulators:start
を実行します。 OpenJDKをインストールするために表示されたエラー要求を確認します。firebase emulators:start --only functions,firestore
またはfirebase serve --only functions,firestore
を使用します。Firebase.jsonファイルでfirestoreが適切に構成されていない可能性があります。これにより、エミュレータが起動しなくなります。
必要なのは、プロジェクトディレクトリでfirebase init firestore
を実行することです。これにより、firestoreルールとインデックスファイルが作成され、それに応じてfirebase.jsonが更新されます。
実際、このエラーは、ユーザーがデータベースなしで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
を実行します
Firebase CLIのバージョン7.8.0
以降(firebase-tools
)には、実行するすべてのエミュレーターのセットアップに役立つ新しいコマンドfirebase init emulators
があります。