İşlevleri yerel olarak çalıştırma

Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Cloud Functions emülatör içerir:

  • HTTPS işlevleri
  • Çağrılabilir işlevler
  • Görev sırası işlevleri
  • Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, desteklenen Firebase uyarıları ve Cloud Pub/Sub'dan tetiklenen arka plan işlevleri.

İşlevleri üretime dağıtmadan önce test etmek için yerel olarak çalıştırabilirsiniz.

Firebase CLI'yi yükleme

Cloud Functions emülatörünü kullanmak için önce Firebase CLI'yi yükleyin:

npm install -g firebase-tools

Yerel emülatörü kullanmak için Cloud Functions'ün aşağıdakilere bağlı olması gerekir:

  • 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ı)

İşlev testlerinizin Firebase Yönetici SDK'sı aracılığıyla Google API'leri veya diğer Firebase API'leriyle etkileşim kurmasını istiyorsanız yönetici kimlik bilgilerini ayarlamanız gerekebilir.

  • Cloud Firestore ve Realtime Database tetikleyicileri zaten yeterli kimlik bilgilerine sahiptir ve ek kurulum gerektirmez.
  • Authentication ve FCM gibi Firebase API'leri 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, Cloud Functions kabuğunu veya firebase emulators:start kabuğunu kullanmanızdan bağımsız olarak geçerlidir.

Yansıtılan işlevler için yönetici kimlik bilgilerini ayarlamak üzere:

  1. Google Cloud konsolunun Hizmet Hesapları bölmesini açın.
  2. App Engine varsayılan hizmet hesabının seçildiğinden emin olun ve sağdaki seçenekler menüsünü kullanarak Anahtar oluştur'u seçin.
  3. İstendiğinde, anahtar türü olarak JSON'yi seçip Oluştur'u tıklayın.
  4. 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 Authentication tetikleyicisi test edilirken taklit edilen işlev admin.auth().getUserByEmail(email)'u çağırabilir.

İş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, firebase init kullanarak yerel projenizde başlattığınız ürünlere göre Cloud Functions, Cloud Firestore, Realtime Database ve Firebase Hosting emülatörlerini başlatır. Belirli bir emülatörü başlatmak istiyorsanız --only işaretini kullanın:

firebase emulators:start --only functions

Emülatörler başladıktan sonra bir test paketi veya test komut dosyası çalıştırmak istiyorsanız emulators:exec komutunu kullanın:

firebase emulators:exec "./my-test.sh"

Emülatörlerle konuşmak için uygulamanızı kullanın

Uygulamanızı, emülatörlerle etkileşime geçecek şekilde ayarlamak için ek yapılandırma yapmanız gerekebilir.

Uygulamanızı çağrılabilir işlevler için ayarlama

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, yerel emülatörden aşağıdaki URL biçimi kullanılarak sunulur:

http://$HOST:$PORT/$PROJECT/$REGION/$NAME

Örneğin, varsayılan ana makine bağlantı noktası ve bölgesi olan basit bir helloWorld işlevi şu adreste sunulur:

https://localhost:5001/$PROJECT/us-central1/helloWorld

Uygulamanızı görev sırası işlevleri emülasyonu için donanımla destekleyin

Emülatör, tetikleyici tanımlarına göre taklit edilen görev sıralarını otomatik olarak oluşturur ve Yönetici SDK'sı, CLOUD_TASKS_EMULATOR_HOST ortam değişkeni aracılığıyla çalıştığını algılarsa sıraya eklenen istekleri emülatöre yönlendirir.

Üretimde kullanılan dağıtım sisteminin, emülatörde uygulanan sistemden daha karmaşık olduğunu unutmayın. Bu nedenle, taklit edilen davranışın üretim ortamlarını tam olarak yansıtmasını bekleyemezsiniz. Emülatördeki parametreler, görevlerin gönderilme ve yeniden deneme hızının üst sınırlarını sağlar.

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ü
  • Authentication emülatörü
  • Pub/Sub emülatörü
  • Firebase uyarıları emülatörü

Arka plan etkinliklerini tetiklemek için Emulator Suite UI'ü kullanarak veya platformunuzun SDK'sını kullanarak uygulamanızı ya da test kodunuzu emülatörlere bağlayarak arka uç kaynaklarını değiştirin.

Uzantılar tarafından yayınlanan özel etkinlikler için test işleyicileri

Firebase Extensions özel etkinliği işlemek üzere uyguladığınız işlevler için Cloud Functions v2 ile Cloud Functions emülatörü Destekleyen Eventarc emülatörü Eventarc tetikleyicileri.

Etkinlik yayınlayan uzantılar için özel etkinlik işleyicilerini test etmek istiyorsanız Cloud Functions ve Eventarc emülatörlerini yüklemeniz gerekir.

Cloud Functions çalışma zamanı, EVENTARC_EMULATOR ortamını ayarlar Eventarc emülatörü, geçerli işlemde localhost:9299 değerini çalışıyor. EVENTARC_EMULATOR ortam değişkeni ayarlandığında Firebase Admin SDK'ler otomatik olarak Eventarc emülatörüne bağlanır. Varsayılan bağlantı noktasını Local Emulator Suite'yi yapılandırma bölümünde açıklandığı şekilde değiştirebilirsiniz.

Ortam değişkenleri doğru şekilde yapılandırıldığında Firebase Admin SDK, 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 kayıtlı işleyicileri ekleyin.

İşleyici yürütmeyle ilgili ayrıntılar için Emulator Suite UI'teki İşlevler günlüklerini kontrol edebilirsiniz.

Diğer hizmetlerle etkileşimler

Emülatör paketi birden fazla emülatör içerir. Bu emülatörler, test etmek için de kullanılabilir.

Cloud Firestore

Firebase Admin SDK'yı kullanan işlevleriniz varsa Cloud Firestore, bu yazma işlemleri 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 ürününe 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 Authentication alanına yazmak için Firebase Admin SDK'yı (9.3.0 veya daha yeni bir sürüm) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Auth emülatörüne gönderilir. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.

Firebase Hosting

Firebase Hosting için dinamik içerik oluşturmak amacıyla Cloud Functions kullanıyorsanız firebase emulators:start, barındırma için yerel HTTP işlevlerinizi proxy olarak kullanır.

Firebase uyarıları

En az bir desteklenen Firebase uyarı tetikleyicisi içeren tüm projelerde, emülatör kullanıcı arayüzünde bir FireAlerts sekmesi bulunur. Bir uyarı tetikleyicisini emüle etmek için:

  1. FireAlerts sekmesini açın. Bu sekmede, tetikleyicileri olan uyarı türleriyle doldurulmuş bir açılır liste gösterilir (örneğin, onNewFatalIssuePublished tetikleyiciniz varsa crashlytics.newFatalIssue gösterilir).
  2. Bir uyarı türü seçin. Form, otomatik olarak varsayılan değerlerle doldurulur. düzenlenebilir. Etkinliğin alanlarını düzenleyebilirsiniz (diğer uyarı etkinliğindeki bilgiler çıkarımsal, sahte değerler veya rastgele oluşturulur).
  3. İşlev emülatörüne sentetik uyarı göndermek için Uyarı gönder'i seçin. Günlük kaydı, Firebase konsolundaki Uyarılar bölümünde (ve günlüklerde) kullanılabilir.

Günlük Kaydı

Emülatör, işlevlerinizdeki günlükleri çalıştıkları terminal penceresine aktarır. İşlevlerinizdeki console.log(), console.info(), console.error() ve console.warn() ifadelerinden gelen tüm çıkışları gösterir.

Sonraki adımlar

Firebase emülatör paketinin kullanımına dair tam bir örnek için test hızlı başlangıç örneğine bakın.