Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Bulut İşlevleri öykünücüsü içerir:

  • HTTPS işlevleri
  • çağrılabilir fonksiyonlar
  • 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'yi yükleyin

Cloud Functions öykünücüsünü kullanmak için önce Firebase CLI'yi yükleyin:

npm install -g firebase-tools

Yerel öykünücüyü kullanmak için Bulut İşlevleriniz şunlara bağlı olmalıdır:

  • firebase-admin sürüm 8.0.0 veya üstü.
  • firebase-functions sürüm 3.0.0 veya üzeri.

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

İşlev testlerinizin Firebase Admin SDK aracılığıyla Google API'leri veya diğer Firebase API'leriyle etkileşime girmesini istiyorsanız yönetici kimlik bilgilerini ayarlamanız gerekebilir.

  • Cloud Firestore ve Realtime Database tetikleyicileri zaten yeterli kimlik bilgilerine sahiptir ve ek kurulum gerektirmez .
  • Kimlik Doğrulama ve FCM gibi Firebase API'leri veya Cloud Translation veya Cloud Speech gibi Google API'leri dahil olmak üzere tüm diğer API'ler, bu bölümde açıklanan kurulum adımlarını gerektirir. Bu, Cloud Functions kabuğunu veya firebase emulators:start kullanıyor olsanız da geçerlidir.

Öykünülmüş işlevler için 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çili olduğundan emin olun ve Anahtar oluştur öğesini seçmek için sağdaki seçenekler menüsünü kullanın.
  3. İstendiğinde, anahtar türü olarak JSON'u seçin ve Oluştur 'u tıklayın.
  4. Google varsayılan kimlik bilgilerinizi indirilen anahtarı işaret edecek şekilde ayarlayın:

    Unix

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase emulators:start
    

    pencereler

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

Bu adımları tamamladıktan sonra, işlev testleriniz Yönetici SDK'sını kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir Kimlik Doğrulama tetikleyicisini test ederken, öykünülmüş işlev admin.auth().getUserByEmail(email) .

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

Özel işlev 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 dizini içinde ç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 öykünücüsü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 dayalı olarak Cloud Functions, Cloud Firestore, Realtime Database ve Firebase Hosting için emülatörleri başlatır. Belirli bir öykünücüyü başlatmak istiyorsanız, --only bayrağını kullanın:

firebase emulators:start --only functions

Öykünücüler başladıktan sonra bir test takımı veya test komut dosyası çalıştırmak istiyorsanız, emulators:exec komutunu kullanın:

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

Uygulamanızı, öykünücülerle konuşmak için kullanın

Uygulamanızı emülatörlerle etkileşime girecek şekilde yönlendirmek için bazı ek yapılandırmalar yapmanız gerekebilir.

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

Prototip ve test etkinlikleriniz çağrılabilir arka uç işlevleri içeriyorsa Firebase için Cloud Functions öykünücüsüyle etkileşimi şu şekilde yapılandırın:

Android
// 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);
Süratli
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

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

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

Web version 8

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

Uygulamanızı HTTPS işlevleri öykünmesi için kullanın

Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel öykünücüden sunulacaktır:

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

Örneğin, varsayılan ana bilgisayar bağlantı noktasına ve bölgeye sahip basit bir helloWorld işlevi şu adreste sunulur:

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

Uygulamanızı arka planda tetiklenen işlev öykünmesi için kullanın

Cloud Functions öykünücüsü, aşağıdaki kaynaklardan arka planda tetiklenen işlevleri destekler:

  • Gerçek Zamanlı Veritabanı öykünücüsü
  • Cloud Firestore öykünücüsü
  • Kimlik doğrulama öykünücüsü
  • Pub/Sub öykünücüsü

Arka plan olaylarını tetiklemek için, Emulator Suite UI kullanarak veya uygulamanızı veya test kodunuzu platformunuz için SDK'yı kullanarak emülatörlere bağlayarak arka uç kaynaklarını değiştirin.

Uzantılar tarafından yayılan özel olaylar için işleyicileri test edin

Cloud Functions v2 ile Firebase Extensions özel olaylarını işlemek üzere uyguladığınız işlevler için Cloud Functions öykünücüsü, Eventarc tetikleyicilerini desteklemek üzere Eventarc öykünücüsü ile eşleşir.

Olayları yayan uzantılar için özel olay işleyicilerini test etmek için Cloud Functions ve Eventarc öykünücülerini yüklemeniz gerekir.

Cloud Functions çalışma zamanı, Eventarc öykünücüsü çalışıyorsa, geçerli işlemde EVENTARC_EMULATOR ortam değişkenini localhost:9299 olarak ayarlar. EVENTARC_EMULATOR ortam değişkeni ayarlandığında Firebase Admin SDK'ları otomatik olarak Eventarc öykünücüsüne bağlanır. Varsayılan bağlantı noktasını, Yerel Öykünücü Paketini Yapılandır altında tartışıldığı gibi değiştirebilirsiniz.

Ortam değişkenleri uygun şekilde yapılandırıldığında, Firebase Admin SDK, olayları otomatik olarak Eventarc öykünücüsüne gönderir. Buna karşılık, Eventarc öykünücüsü, kayıtlı işleyicileri tetiklemek için Bulut İşlevleri öykünücüsüne geri çağrı yapar.

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

Diğer hizmetlerle etkileşimler

Öykünücü paketi, ürünler arası etkileşimlerin test edilmesini sağlayan birden çok öykünücü içerir.

Bulut Firestore

Cloud Firestore'a yazmak için Firebase Admin SDK'sını kullanan işlevleriniz varsa, bu yazma işlemleri, çalışıyorsa Cloud Firestore öykünücüsüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse, bunlar Bulut İşlevleri öykünücüsünde çalıştırılacaktır.

Bulut depolama

Cloud Storage'a yazmak için Firebase Admin SDK'sını (sürüm 9.7.0 veya üstü) kullanan işlevleriniz varsa, bu yazma işlemleri, çalışıyorsa Cloud Storage öykünücüsüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse, bunlar Bulut İşlevleri öykünücüsünde çalıştırılacaktır.

Firebase Kimlik Doğrulaması

Firebase Authentication'a yazmak için Firebase Admin SDK'sını (sürüm 9.3.0 veya üstü) kullanan işlevleriniz varsa, bu yazma işlemleri çalışıyorsa Auth öykünücüsüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse, bunlar Bulut İşlevleri öykünücüsünde çalıştırılacaktır.

Firebase Barındırma

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

Kerestecilik

Öykünücü, işlevlerinizden günlükleri çalıştıkları terminal penceresine aktarır. console.log() , console.info() , console.error() ve console.warn() deyimlerinden gelen tüm çıktıları işlevlerinizin içinde görüntüler.

Sonraki adımlar

Firebase öykünücü paketini kullanmanın tam bir örneği için test hızlı başlangıç ​​örneğine bakın.