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

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

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

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

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

Cloud Functions एम्युलेटर का इस्तेमाल करने के लिए, पहले 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 और रीयलटाइम डेटाबेस ट्रिगर के पास पहले से ही ज़रूरी क्रेडेंशियल हैं. इनके लिए, अतिरिक्त सेटअप की ज़रूरत नहीं होती.
  • Firebase API (जैसे कि पुष्टि करना) और FCM या Google API (जैसे- Cloud Translation या Cloud Speech) के साथ-साथ अन्य सभी एपीआई को सेट अप करने के लिए, इस सेक्शन में बताए गए तरीके अपनाने ज़रूरी हैं. यह दोनों ही स्थितियों में लागू होता है, चाहे आप 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

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

Cloud Functions एम्युलेटर चलाने के लिए, 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")

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

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

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

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

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

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

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

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

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

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

एक्सटेंशन से जनरेट होने वाले कस्टम इवेंट के लिए, हैंडलर की जांच करें

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

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

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

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

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

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

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

Cloud Firestore

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

Cloud Storage

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

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

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

Firebase होस्टिंग

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

लॉगिंग

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

अगले चरण

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