फ़ंक्शन को स्थानीय तौर पर चलाता है

Firebase सीएलआई में एक Cloud Functions एम्युलेटर शामिल है जो नीचे दिए गए फ़ंक्शन टाइप को एम्युलेट कर सकता है:

  • एचटीटीपीएस फ़ंक्शन
  • कॉल किए जा सकने वाले फ़ंक्शन
  • Firebase से पुष्टि करने, रीयल टाइम डेटाबेस, Cloud Firestore, Cloud Storage, और Cloud Pub/Sub से बैकग्राउंड फ़ंक्शन ट्रिगर हुए.

प्रोडक्शन में डिप्लॉय करने से पहले, फ़ंक्शन को स्थानीय तौर पर चलाया जा सकता है, ताकि उनकी जांच की जा सके.

Firebase सीएलआई को इंस्टॉल करें

क्लाउड फ़ंक्शन एम्युलेटर का इस्तेमाल करने के लिए, पहले Firebase सीएलआई इंस्टॉल करें:

npm install -g firebase-tools

लोकल एम्युलेटर का इस्तेमाल करने के लिए, आपके Cloud Functions इन पर निर्भर होना चाहिए:

  • firebase-admin वर्शन 8.0.0 या इसके बाद का वर्शन.
  • firebase-functions वर्शन 3.0.0 या इसके बाद का वर्शन.

एडमिन के क्रेडेंशियल सेट अप करना (ज़रूरी नहीं)

अगर आप चाहते हैं कि आपके फ़ंक्शन टेस्ट, Firebase एडमिन SDK के ज़रिए Google API या दूसरे Firebase एपीआई के साथ इंटरैक्ट करें, तो आपको एडमिन क्रेडेंशियल सेट अप करने पड़ सकते हैं.

  • Cloud Firestore और रीयलटाइम डेटाबेस ट्रिगर के पास पहले से ही ज़रूरत के मुताबिक क्रेडेंशियल हैं. साथ ही, इनके लिए अतिरिक्त सेटअप की ज़रूरत नहीं है.
  • अन्य सभी एपीआई के लिए, इस सेक्शन में बताए गए सेटअप का तरीका अपनाना ज़रूरी है. इनमें पुष्टि करना और FCM जैसे Firebase एपीआई या Cloud Translation या Cloud Speech जैसे Google API शामिल हैं. यह लागू होता है, भले ही आप Cloud Functions शेल का इस्तेमाल कर रहे हों या firebase emulators:start.

एम्युलेट किए गए फ़ंक्शन के लिए, एडमिन क्रेडेंशियल सेट अप करने के लिए:

  1. Google Cloud Console का सेवा खातों वाला पैनल खोलें.
  2. पक्का करें कि App Engine डिफ़ॉल्ट सेवा खाता चुना गया हो और कुंजी बनाएं को चुनने के लिए दाईं ओर दिए गए विकल्प मेन्यू का इस्तेमाल करें.
  3. जब कहा जाए, तब कुंजी के टाइप के लिए JSON चुनें और बनाएं पर क्लिक करें.
  4. डाउनलोड की गई कुंजी पर ले जाने के लिए, Google के डिफ़ॉल्ट क्रेडेंशियल सेट करें:

    Unix

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

    शीशा

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

इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन टेस्ट एडमिन SDK का इस्तेमाल करके Firebase और Google API को ऐक्सेस कर सकते हैं. उदाहरण के लिए, किसी पुष्टि करने वाले ट्रिगर की जांच करते समय, एम्युलेट किया गया फ़ंक्शन admin.auth().getUserByEmail(email) को कॉल कर सकता है.

फ़ंक्शन कॉन्फ़िगरेशन सेट अप करें (ज़रूरी नहीं)

अगर कस्टम फ़ंक्शन कॉन्फ़िगरेशन वैरिएबल का इस्तेमाल किया जा रहा है, तो सबसे पहले अपने लोकल एनवायरमेंट में कस्टम कॉन्फ़िगरेशन (इसे functions डायरेक्ट्री में चलाएं) पाने के लिए कमांड चलाएं:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

एम्युलेटर सुइट चलाएं

क्लाउड फ़ंक्शन एम्युलेटर चलाने के लिए, emulators:start कमांड का इस्तेमाल करें:

firebase emulators:start

आपने firebase init का इस्तेमाल करके, अपने लोकल प्रोजेक्ट में जिन प्रॉडक्ट को शुरू किया है उन पर आधारित emulators:start कमांड, Cloud Functions, Cloud Firestore, रीयल टाइम डेटाबेस, और Firebase होस्टिंग के लिए एम्युलेटर शुरू कर देगा. अगर आपको कोई एम्युलेटर शुरू करना है, तो --only फ़्लैग का इस्तेमाल करें:

firebase emulators:start --only functions

अगर आपको एम्युलेटर के चालू होने के बाद, टेस्ट सुइट या टेस्टिंग स्क्रिप्ट चलाना है, तो emulators:exec कमांड का इस्तेमाल करें:

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

एम्युलेटर से बात करने के लिए, अपने ऐप्लिकेशन का इस्तेमाल करें

अपने ऐप्लिकेशन को एम्युलेटर के साथ इंटरैक्ट करने के लिए, आपको कुछ और कॉन्फ़िगरेशन करना होगा.

कॉल करने लायक फ़ंक्शन के लिए, अपने ऐप्लिकेशन का इस्तेमाल करें

अगर आपके प्रोटोटाइप और टेस्ट गतिविधियों में कॉल किए जा सकने वाले बैकएंड फ़ंक्शन शामिल हैं, तो 'Firebase के लिए Cloud Functions' एम्युलेटर के साथ इंटरैक्शन को इस तरह से कॉन्फ़िगर करें:

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")

वेब मॉड्यूलर एपीआई

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

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

वेब नेमस्पेस किया गया एपीआई

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

एचटीटीपीएस फ़ंक्शन एम्युलेट करने के लिए, अपने ऐप्लिकेशन का इस्तेमाल करें

आपके कोड के हर एचटीटीपीएस फ़ंक्शन को लोकल एम्युलेटर से दिखाया जाएगा. ऐसा इस यूआरएल फ़ॉर्मैट का इस्तेमाल करके किया जाएगा:

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

उदाहरण के लिए, डिफ़ॉल्ट होस्ट पोर्ट और क्षेत्र के साथ एक सामान्य helloWorld फ़ंक्शन यहां दिखाया जाएगा:

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

बैकग्राउंड से ट्रिगर किए गए फ़ंक्शन को एम्युलेट करने के लिए, अपने ऐप्लिकेशन का इस्तेमाल करें

Cloud Functions एम्युलेटर, बैकग्राउंड से ट्रिगर किए गए उन फ़ंक्शन के साथ काम करता है जो इन सोर्स से ट्रिगर होते हैं:

  • रीयल टाइम डेटाबेस एम्युलेटर
  • Cloud Firestore एम्युलेटर
  • पुष्टि करने के लिए एम्युलेटर
  • Pub/Sub एम्युलेटर

बैकग्राउंड इवेंट को ट्रिगर करने के लिए, एम्युलेटर सुइट के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके बैक-एंड संसाधनों में बदलाव करें. इसके अलावा, अपने प्लैटफ़ॉर्म के लिए SDK टूल का इस्तेमाल करके, अपने ऐप्लिकेशन या टेस्ट कोड को एम्युलेटर से कनेक्ट किया जा सकता है.

एक्सटेंशन से भेजे गए कस्टम इवेंट के लिए, टेस्ट हैंडलर

उन फ़ंक्शन के लिए जिन्हें आपने Cloud Functions v2 के साथ Firebase एक्सटेंशन के कस्टम इवेंट को हैंडल करने के लिए लागू किया है, क्लाउड फ़ंक्शन एम्युलेटर, Eventarc एम्युलेटर से जुड़ता है, ताकि Eventarc ट्रिगर का इस्तेमाल किया जा सके.

इवेंट छोड़ने वाले एक्सटेंशन के लिए कस्टम इवेंट हैंडलर की जांच करने के लिए, आपको Cloud Functions और Eventarc एम्युलेटर इंस्टॉल करने होंगे.

अगर Eventarc एम्युलेटर चल रहा है, तो Cloud Functions रनटाइम मौजूदा प्रोसेस में EVENTARC_EMULATOR एनवायरमेंट वैरिएबल को localhost:9299 पर सेट करता है. EVENTARC_EMULATOR एनवायरमेंट वैरिएबल सेट होने पर, Firebase एडमिन SDK टूल, Eventarc एम्युलेटर से अपने-आप कनेक्ट हो जाते हैं. लोकल एम्युलेटर सुइट कॉन्फ़िगर करें में बताए गए तरीके से, डिफ़ॉल्ट पोर्ट में बदलाव किया जा सकता है.

एनवायरमेंट वैरिएबल को सही तरीके से कॉन्फ़िगर किए जाने के बाद, Firebase एडमिन SDK अपने-आप Eventarc एम्युलेटर पर इवेंट भेजता है. इसके बदले में, Eventarc एम्युलेटर किसी भी रजिस्टर किए गए हैंडलर को ट्रिगर करने के लिए, Cloud Functions एम्युलेटर को वापस कॉल करता है.

हैंडलर का इस्तेमाल करने के बारे में जानकारी के लिए, एम्युलेटर सुइट के यूज़र इंटरफ़ेस (यूआई) में फ़ंक्शन लॉग देखें.

अन्य सेवाओं के साथ इंटरैक्शन

एम्युलेटर सुइट में कई एम्युलेटर शामिल हैं. इनकी मदद से, क्रॉस-प्रॉडक्ट इंटरैक्शन की जांच की जा सकती है.

Cloud Firestore

अगर आपके पास ऐसे फ़ंक्शन हैं जो Cloud Firestore में डेटा लिखने के लिए, Firebase एडमिन SDK का इस्तेमाल करते हैं, तो Cloud Firestore एम्युलेटर को चलाने पर, उन दस्तावेज़ों को Cloud Firestore एम्युलेटर को भेजा जाएगा. अगर इन लिखने से आगे के फ़ंक्शन ट्रिगर होते हैं, तो वे Cloud Functions एम्युलेटर में चलाए जाएंगे.

Cloud Storage

अगर आपके पास ऐसे फ़ंक्शन हैं जो Cloud Storage में लिखने के लिए Firebase एडमिन SDK टूल (9.7.0 या उसके बाद के वर्शन) का इस्तेमाल करते हैं, तो सही वर्शन के चालू होने पर, इन्हें Cloud Storage एम्युलेटर को भेजा जाएगा. अगर इन लिखने से आगे के फ़ंक्शन ट्रिगर होते हैं, तो वे Cloud Functions एम्युलेटर में चलाए जाएंगे.

Firebase से पुष्टि करना

अगर आपके पास ऐसे फ़ंक्शन हैं जो Firebase एडमिन SDK (9.3.0 या इसके बाद के वर्शन) का इस्तेमाल करके Firebase से पुष्टि करने की सुविधा का इस्तेमाल करते हैं, तो अगर आपके पास Firebase एडमिन SDK टूल है, तो ऑथ एम्युलेटर को यह जानकारी भेजी जाएगी. अगर इन लिखने से आगे के फ़ंक्शन ट्रिगर होते हैं, तो वे Cloud Functions एम्युलेटर में चलाए जाएंगे.

Firebase होस्टिंग

अगर Firebase होस्टिंग के लिए डाइनैमिक कॉन्टेंट जनरेट करने के लिए Cloud Functions का इस्तेमाल किया जा रहा है, तो firebase emulators:start आपके स्थानीय एचटीटीपी फ़ंक्शन का इस्तेमाल, होस्टिंग के लिए प्रॉक्सी के तौर पर करता है.

लॉगिंग

एम्युलेटर, आपके फ़ंक्शन के लॉग को उस टर्मिनल विंडो तक स्ट्रीम करता है जहां वे चलते हैं. यह आपके फ़ंक्शन में console.log(), console.info(), console.error(), और console.warn() स्टेटमेंट के सभी आउटपुट दिखाता है.

अगले चरण

Firebase एम्युलेटर सुइट का इस्तेमाल करने के पूरे उदाहरण के लिए, टेस्टिंग क्विकस्टार्ट सैंपल देखें.