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

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 या इसके बाद वाला वर्शन.

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

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

  • Cloud Firestore और रीयलटाइम डेटाबेस ट्रिगर के पास पहले से ही ज़रूरी क्रेडेंशियल हैं. इनके लिए, अतिरिक्त सेटअप की ज़रूरत नहीं होती.
  • पुष्टि करने और FCM जैसे Firebase API या 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
    

इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन टेस्ट, Firebase और एडमिन SDK का इस्तेमाल करने वाले 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

emulators:start निर्देश, Cloud Functions के लिए एम्युलेटर शुरू करेगा, प्रॉडक्ट के आधार पर Cloud Firestore, रीयलटाइम डेटाबेस, और Firebase होस्टिंग आपने firebase init का इस्तेमाल करके, अपने लोकल प्रोजेक्ट में शुरू किया है. अगर आपको किसी एम्युलेटर को शुरू करने के लिए, --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 एम्युलेटर

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

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

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

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

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

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

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

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

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

Cloud Firestore

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

Cloud Storage

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

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

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

Firebase होस्टिंग

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

लॉगिंग

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

अगले चरण

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