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

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

  • HTTPS işlevleri
  • Çağrılabilir işlevler
  • Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage 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'yı 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ızın aşağıdakilere bağlı olması gerekir:

  • firebase-admin sürümü 8.0.0 veya sonraki sürümler.
  • firebase-functions sürümü 3.0.0 veya sonraki sürümler.

Yönetici kimlik bilgilerini ayarlayın (isteğe bağlı)

İşlevler testlerinizin Firebase Admin SDK üzerinden 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 ya da Cloud Translation veya 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ı gerekir. Cloud Functions kabuğu veya firebase emulators:start kullanmanız fark etmeksizin bu koşul geçerlidir.

Öykünülen işlevlere yönelik yönetici kimlik bilgilerini ayarlamak için:

  1. Google Cloud Console'un 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çin ve Oluştur'u tıklayın.
  4. Google varsayılan kimlik bilgilerinizi, indirilen anahtara 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 Admin SDK'yı kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir Kimlik Doğrulama tetikleyicisi test edilirken emüle edilen işlev admin.auth().getUserByEmail(email) yöntemini çağırabilir.

İşlevler yapılandırmasını ayarlayın (isteğe bağlı)

Özel işlevler yapılandırma değişkenleri kullanıyorsanız önce yerel ortamınızda özel yapılandırmanızı almak için komutu çalıştırın (bunu functions dizininde çalıştırın):

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ırın

Cloud Functions emülatörünü çalıştırmak için emulators:start komutunu kullanın:

firebase emulators:start

emulators:start komutu, yerel projenizde firebase init kullanarak başlattığınız ürünlere bağlı olarak Cloud Functions, Cloud Firestore, Realtime Database ve Firebase Hosting için emülatörleri 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şlatıldıktan sonra bir test paketi veya test komut dosyası çalıştırmak isterseniz 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şim kuracak şekilde ayarlamak için bazı ek yapılandırmalar yapmanız gerekebilir.

Uygulamanızda çağrılabilir işlevler kullanın

Prototip ve test etkinlikleriniz çağrılabilir arka uç işlevleri içeriyorsa Cloud Functions for Firebase emülatörü ile 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 Modüler API'si

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "127.0.0.1", 5001);

Web ad alanına sahip API'sı

firebase.functions().useEmulator("127.0.0.1", 5001);

Uygulamanızı HTTPS işlevleri emülasyonu için kullanın

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ölge içeren basit bir helloWorld işlevi şu konumda sunulur:

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

Uygulamanızı arka planda tetiklenen işlevler emülasyonu için 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 Emulator Suite kullanıcı arayüzünü kullanarak veya uygulamanızı ya da test kodunuzu platformunuzun SDK'sını kullanarak 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

Cloud Functions v2 ile Firebase Extensions özel etkinliklerini işlemek amacıyla uyguladığınız işlevlerde Cloud Functions emülatörü, Eventarc tetikleyicilerini desteklemek için Eventarc emülatörüyle eşleşir.

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

Eventarc emülatörü çalışıyorsa Cloud Functions çalışma zamanı, mevcut işlemde EVENTARC_EMULATOR ortamı değişkenini localhost:9299 olarak ayarlar. Firebase Yönetici SDK'ları, EVENTARC_EMULATOR ortam değişkeni ayarlandığında Eventarc emülatörüne otomatik olarak bağlanır. Varsayılan bağlantı noktasını Configure Local Emulator Suite (Yerel Emulator Suite'i Yapılandırma) bölümünde açıklandığı gibi değiştirebilirsiniz.

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ü kayıtlı işleyicileri tetiklemek için Cloud Functions emülatörüne geri bir çağrı yapar.

İşleyici yürütmeyle ilgili ayrıntılar için Emulator Suite kullanıcı arayüzündeki Functions günlüklerine bakabilirsiniz.

Diğer hizmetlerle etkileşimler

Emülatör paketinde, ürünler arası etkileşimlerin test edilmesini sağlayan birden fazla emülatör bulunur.

Cloud Firestore

Cloud Firestore'a yazmak için Firebase Admin SDK kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Firestore emülatörüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse bunlar Cloud Functions emülatöründe çalıştırılır.

Cloud Storage

Cloud Storage'a yazmak için Firebase Admin SDK'yı (9.7.0 veya üzeri bir sürüm) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Storage emülatörüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse bunlar Cloud Functions emülatöründe çalıştırılır.

Firebase Authentication

Firebase Authentication'a yazmak için Firebase Admin SDK'yı (9.3.0 veya üzeri) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Auth emülatörüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse bunlar 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 proxy olarak yerel HTTP işlevlerinizi kullanır.

Günlük Kaydı

Emülatör, işlevlerinizdeki günlükleri çalıştırdıkları terminal penceresine aktarır. İşlevlerinizin içindeki console.log(), console.info(), console.error() ve console.warn() ifadelerinin tüm çıktılarını gösterir.

Sonraki adımlar

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