Catch up on highlights from Firebase at Google I/O 2023. Learn more

स्थानीय रूप से कार्य चलाएँ

फायरबेस सीएलआई में क्लाउड फ़ंक्शंस एमुलेटर शामिल है जो निम्न फ़ंक्शन प्रकारों का अनुकरण कर सकता है:

  • एचटीटीपीएस कार्य करता है
  • कॉल करने योग्य कार्य
  • फायरबेस ऑथेंटिकेशन, रियलटाइम डेटाबेस, क्लाउड फायरस्टोर, क्लाउड स्टोरेज और क्लाउड पब/सब से ट्रिगर किए गए बैकग्राउंड फ़ंक्शंस।

आप उत्पादन में परिनियोजित करने से पहले कार्यों का परीक्षण करने के लिए उन्हें स्थानीय रूप से चला सकते हैं।

फायरबेस सीएलआई स्थापित करें

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

npm install -g firebase-tools

स्थानीय एमुलेटर का उपयोग करने के लिए, आपके क्लाउड फ़ंक्शंस पर निर्भर होना चाहिए:

  • firebase-admin संस्करण 8.0.0 या उच्चतर।
  • firebase-functions संस्करण 3.0.0 या उच्चतर।

एडमिन क्रेडेंशियल सेट अप करें (वैकल्पिक)

अगर आप चाहते हैं कि आपके फ़ंक्शन परीक्षण Google API या अन्य Firebase API के साथ Firebase Admin SDK के माध्यम से सहभागिता करें, तो आपको व्यवस्थापकीय क्रेडेंशियल्स सेट करने की आवश्यकता हो सकती है।

  • Cloud Firestore और रीयलटाइम डेटाबेस ट्रिगर के पास पहले से ही काफ़ी क्रेडेंशियल हैं और उन्हें अतिरिक्त सेटअप की ज़रूरत नहीं है।
  • फायरबेस एपीआई जैसे ऑथेंटिकेशन और एफसीएम या गूगल एपीआई जैसे क्लाउड ट्रांसलेशन या क्लाउड स्पीच सहित अन्य सभी एपीआई को इस खंड में वर्णित सेटअप चरणों की आवश्यकता होती है। यह लागू होता है कि आप क्लाउड फ़ंक्शंस शेल का उपयोग कर रहे हैं या firebase emulators:start

अनुकरणीय कार्यों के लिए व्यवस्थापक क्रेडेंशियल्स सेट अप करने के लिए:

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

    यूनिक्स

    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

emulators:start कमांड फायरबेस firebase init का उपयोग करके अपने स्थानीय प्रोजेक्ट में इनिशियलाइज़ किए गए उत्पादों के आधार पर क्लाउड फ़ंक्शंस, क्लाउड फायरस्टोर, रियलटाइम डेटाबेस और फायरबेस होस्टिंग के लिए एमुलेटर शुरू करेगा। यदि आप एक विशेष एमुलेटर शुरू करना चाहते हैं, तो --only फ्लैग का उपयोग करें:

firebase emulators:start --only functions

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

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

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

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

कॉल करने योग्य कार्यों के लिए अपने ऐप को इंस्ट्रुमेंट करें

यदि आपके प्रोटोटाइप और परीक्षण गतिविधियों में कॉल करने योग्य बैकएंड फ़ंक्शन शामिल हैं, तो Firebase एमुलेटर के लिए क्लाउड फ़ंक्शंस के साथ सहभागिता को इस तरह कॉन्फ़िगर करें:

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);
तीव्र
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")

Web modular API

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

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

Web namespaced API

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

HTTPS फ़ंक्शन एमुलेशन के लिए अपने ऐप को इंस्ट्रुमेंट करें

आपके कोड में प्रत्येक HTTPS फ़ंक्शन निम्न URL प्रारूप का उपयोग करके स्थानीय एमुलेटर से परोसा जाएगा:

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

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

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

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

क्लाउड फ़ंक्शंस एमुलेटर निम्नलिखित स्रोतों से पृष्ठभूमि-ट्रिगर किए गए कार्यों का समर्थन करता है:

  • रीयलटाइम डेटाबेस एमुलेटर
  • क्लाउड फायरस्टोर एमुलेटर
  • प्रमाणीकरण एमुलेटर
  • पब / उप एमुलेटर

पृष्ठभूमि घटनाओं को ट्रिगर करने के लिए, एमुलेटर सूट यूआई का उपयोग करके बैक-एंड संसाधनों को संशोधित करें, या अपने ऐप या परीक्षण कोड को अपने प्लेटफॉर्म के लिए एसडीके का उपयोग करके एमुलेटर से कनेक्ट करें।

एक्सटेंशन द्वारा उत्सर्जित कस्टम ईवेंट के लिए टेस्ट हैंडलर

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

ईवेंट उत्सर्जित करने वाले एक्सटेंशन के लिए कस्टम ईवेंट हैंडलर का परीक्षण करने के लिए, आपको क्लाउड फ़ंक्शंस और ईवेंटआर्क एमुलेटर इंस्टॉल करना होगा।

क्लाउड फ़ंक्शंस रनटाइम EVENTARC_EMULATOR पर्यावरण चर को localhost:9299 वर्तमान प्रक्रिया में अगर इवेंटार्क एमुलेटर चल रहा है। EVENTARC_EMULATOR पर्यावरण चर सेट होने पर Firebase व्यवस्थापक SDK स्वचालित रूप से Eventarc एमुलेटर से कनेक्ट हो जाते हैं। आप डिफ़ॉल्ट पोर्ट को संशोधित कर सकते हैं जैसा कि स्थानीय एमुलेटर सूट कॉन्फ़िगर करें के तहत चर्चा की गई है।

जब पर्यावरण चर ठीक से कॉन्फ़िगर किए जाते हैं, तो फायरबेस एडमिन एसडीके स्वचालित रूप से इवेंटआर्क एमुलेटर को ईवेंट भेजता है। बदले में, Eventarc एमुलेटर किसी भी पंजीकृत हैंडलर को ट्रिगर करने के लिए क्लाउड फ़ंक्शंस एमुलेटर पर वापस कॉल करता है।

आप हैंडलर निष्पादन के विवरण के लिए एम्यूलेटर सुइट UI में फ़ंक्शन लॉग देख सकते हैं।

अन्य सेवाओं के साथ सहभागिता

एमुलेटर सूट में कई एमुलेटर शामिल हैं, जो क्रॉस-प्रोडक्ट इंटरैक्शन के परीक्षण को सक्षम करते हैं।

क्लाउड फायरस्टोर

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

घन संग्रहण

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

फायरबेस प्रमाणीकरण

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

फायरबेस होस्टिंग

यदि आप फायरबेस होस्टिंग के लिए गतिशील सामग्री उत्पन्न करने के लिए क्लाउड फ़ंक्शंस का उपयोग कर रहे हैं, firebase emulators:start होस्टिंग के लिए प्रॉक्सी के रूप में आपके स्थानीय HTTP फ़ंक्शंस का उपयोग करता है।

लॉगिंग

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

अगले कदम

Firebase एम्यूलेटर सूट का उपयोग करने के पूर्ण उदाहरण के लिए, परीक्षण क्विकस्टार्ट नमूना देखें।