फायरबेस सीएलआई में क्लाउड फ़ंक्शंस एमुलेटर शामिल है जो निम्न फ़ंक्शन प्रकारों का अनुकरण कर सकता है:
- एचटीटीपीएस कार्य करता है
- कॉल करने योग्य कार्य
- फायरबेस ऑथेंटिकेशन, रियलटाइम डेटाबेस, क्लाउड फायरस्टोर, क्लाउड स्टोरेज और क्लाउड पब/सब से ट्रिगर किए गए बैकग्राउंड फ़ंक्शंस।
आप उत्पादन में परिनियोजित करने से पहले कार्यों का परीक्षण करने के लिए उन्हें स्थानीय रूप से चला सकते हैं।
फायरबेस सीएलआई स्थापित करें
क्लाउड फ़ंक्शंस एमुलेटर का उपयोग करने के लिए, पहले फायरबेस सीएलआई स्थापित करें:
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
।
अनुकरणीय कार्यों के लिए व्यवस्थापक क्रेडेंशियल्स सेट अप करने के लिए:
- Google क्लाउड कंसोल का सेवा खाता फलक खोलें।
- सुनिश्चित करें कि ऐप इंजन डिफ़ॉल्ट सेवा खाता चुना गया है, और कुंजी बनाएं का चयन करने के लिए दाईं ओर विकल्प मेनू का उपयोग करें।
- संकेत दिए जाने पर, कुंजी प्रकार के लिए JSON चुनें और बनाएं क्लिक करें.
डाउनलोड की गई कुंजी को इंगित करने के लिए अपने 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 एम्यूलेटर सूट का उपयोग करने के पूर्ण उदाहरण के लिए, परीक्षण क्विकस्टार्ट नमूना देखें।