Firebase CLI, şu fonksiyon türlerini görebilirsiniz:
- HTTPS işlevleri
- Çağrılabilir işlevler
- Firebase Authentication, Realtime Database'den tetiklenen arka plan işlevleri, Cloud Firestore, Cloud Storage ve Cloud Pub/Sub.
İşlevleri yerel olarak çalıştırarak üretime dağıtmadan önce test edebilirsiniz.
Firebase CLI'ı yükleme
Cloud Functions emülatörünü kullanmak için önce Firebase CLI'ı yükleyin:
npm install -g firebase-tools
Yerel emülatörü kullanmak için Cloud Functions'ınız aşağıdakilere bağlı olmalıdır:
firebase-admin
8.0.0
veya sonraki bir sürüm.firebase-functions
3.0.0
veya sonraki bir sürüm.
Yönetici kimlik bilgilerini ayarlayın (isteğe bağlı)
İşlevler testlerinizin, Google API'leri veya diğer Firebase ile etkileşime girmesini istiyorsanız Firebase Admin SDK'sı aracılığıyla API'leri ayarlamak için yönetici kimlik bilgileri.
- Cloud Firestore ve Realtime Database tetikleyicileri zaten yeterli kimlik bilgilerine sahiptir ve ek kurulum gerektirmez.
- Authentication gibi Firebase API'leri ve FCM veya Cloud Translation ya da Cloud Speech gibi Google API'leri dahil olmak üzere diğer tüm API'ler için bu bölümde açıklanan kurulum adımlarının uygulanması gerekir. Bu durum, ister Cloud Functions kabuğunu ister
firebase emulators:start
kabuğunu kullanın.
Emüle edilen işlevler için yönetici kimlik bilgilerini ayarlamak üzere:
- Şunu açın: Hizmet Hesapları bölmesi kullanıma sunuyoruz.
- App Engine varsayılan hizmet hesabı seçeneğinin belirlendiğinden emin olun ve Anahtar oluştur'u seçmek için sağdaki seçenekler menüsünü kullanın.
- İstendiğinde, anahtar türü olarak JSON'yi seçip Oluştur'u tıklayın.
Varsayılan Google kimlik bilgilerinizi, indirilen anahtarı işaret edecek şekilde ayarlayın:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Bu adımları tamamladıktan sonra işlev testleriniz Firebase'e ve
Admin SDK'sını kullanan Google API'leri Örneğin,
bir kimlik doğrulama tetikleyicisi olarak, emüle edilen işlev
admin.auth().getUserByEmail(email)
İşlev yapılandırmasını ayarlayın (isteğe bağlı)
Özel işlevler yapılandırma değişkenleri kullanıyorsanız önce
komutuna ekleyerek (bunu functions
dizininde çalıştırın)
yerel ortamınızda:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Emülatör paketini çalıştırma
Cloud Functions emülatörünü çalıştırmak için emulators:start
komutunu kullanın:
firebase emulators:start
emulators:start
komutu, Cloud Functions için emülatörleri başlatır.
Ürünlere göre Cloud Firestore, Realtime Database ve Firebase Hosting
firebase init
kullanarak yerel projenizde başlattınız. Şunu istiyorsanız:
belirli bir emülatörü başlatmak için --only
işaretini kullanın:
firebase emulators:start --only functions
Emülatörler yüklendikten sonra bir test paketi veya test komut dosyası çalıştırmak
emulators:exec
komutunu kullanın:
firebase emulators:exec "./my-test.sh"
Emülatörlerle konuşmak için uygulamanızı kullanın
Uygulamanızın emülatörlerle etkileşime girmesini sağlamak için bazı ek yapılandırmalar içeriyor.
Çağrılabilir işlevler için uygulamanızı kullanın
Prototipiniz ve test etkinlikleriniz çağrılanabilir arka uç işlevleri içeriyorsa Cloud Functions for Firebase emülatörüyle etkileşimi şu şekilde yapılandırın:
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
Uygulamanızda HTTPS işlevleri emülasyonu için araç kullanma
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel emülatörden sunulur:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
Örneğin, varsayılan ana makine bağlantı noktası ve bölgeye sahip basit bir helloWorld
işlevi şu konumda sunulur:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Arka planda tetiklenen işlevler emülasyonu için uygulamanızda kullanın
Cloud Functions emülatörü, aşağıdaki kaynaklardan gelen arka planda tetiklenen işlevleri destekler:
- Realtime Database emülatörü
- Cloud Firestore emülatörü
- Kimlik doğrulama emülatörü
- Pub/Sub emülatörü
Arka plan etkinliklerini tetiklemek için arka uç kaynaklarını Emulator Suite kullanıcı arayüzünü kullanarak veya uygulamanızı ya da test kodunuzu emülatörlere bağlayarak kullanmanız önerilir.
Uzantılar tarafından yayınlanan özel etkinlikler için test işleyicileri
Firebase Extensions özel etkinliklerini işlemek amacıyla uyguladığınız işlevler için Cloud Functions v2 ile kullandığınızda, Cloud Functions emülatörü Destekleyen Eventarc emülatörü Eventarc tetikleyicileri.
Etkinlik yayan uzantılarda özel etkinlik işleyicileri test etmek için Cloud Functions ve Eventarc emülatörleri.
Cloud Functions çalışma zamanı, EVENTARC_EMULATOR
ortamını ayarlar
Eventarc emülatörü, mevcut işlemde localhost:9299
değerini
çalışıyor. Firebase Admin SDK'ları Eventarc'a otomatik olarak bağlanır
EVENTARC_EMULATOR
ortam değişkeni ayarlandığında emülatör olarak ayarlanır. Şunları yapabilirsiniz:
varsayılan bağlantı noktasını Configure Local Emulator Suite (Yerel Emulator Paketini Yapılandırma) altında açıklandığı şekilde değiştirin.
Ortam değişkenleri doğru şekilde yapılandırıldığında Firebase Admin SDK'sı , etkinlikleri otomatik olarak Eventarc emülatörüne gönderir. Buna karşılık Eventarc emülatörü, herhangi bir öğeyi tetiklemek için Cloud Functions emülatörüne geri kayıtlı işleyicileri.
Ayrıntılı bilgi için Emulator Suite kullanıcı arayüzündeki Functions günlüklerini kontrol edebilirsiniz. işleyicinin yürütülmesinden kaynaklanır.
Diğer hizmetlerle olan etkileşimler
Emülatör paketi birden fazla emülatör içerir. Bu emülatörler, yönelik testler yapılır.
Cloud Firestore
Firebase Admin SDK'yı kullanan işlevleriniz varsa Cloud Firestore, bu yazmalar Cloud Firestore emülatörüne gönderilir çalışıp çalışmadığını kontrol edin. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.
Cloud Storage
Firebase Admin SDK'yı (9.7.0 veya sonraki sürümler) kullanan işlevleriniz varsa Cloud Storage'a yazmak için bu yazma işlemleri Cloud Storage emülatörüne gönderilir çalışıp çalışmadığını kontrol edin. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.
Firebase Authentication
Firebase Admin SDK'yı (9.3.0 veya sonraki sürümler) kullanan işlevleriniz varsa Firebase Authentication'a yazmak için bu yazma işlemleri Auth emülatörüne gönderilir çalışıp çalışmadığını kontrol edin. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.
Firebase Hosting
Cloud Functions'ı kullanarak tüm etkinlikler için
Firebase Hosting, firebase emulators:start
barındırma için proxy olarak yerel HTTP işlevlerinizi kullanır.
Günlük Kaydı
Emülatör, işlevlerinizin günlük akışını gerçekleştirdikleri terminal penceresine
run. Bu sonuçta console.log()
, console.info()
ve
İşlevlerinizin içindeki console.error()
ve console.warn()
ifadeleri.
Sonraki adımlar
Firebase emülatör paketini kullanmaya ilişkin tam bir örnek için test hızlı başlangıç örneği.