फायरबेस सीएलआई में एक क्लाउड फ़ंक्शंस एमुलेटर शामिल है जो निम्नलिखित फ़ंक्शन प्रकारों का अनुकरण कर सकता है:
- HTTPS कार्य
- कॉल करने योग्य फ़ंक्शन
- फायरबेस ऑथेंटिकेशन, रियलटाइम डेटाबेस, क्लाउड फायरस्टोर, क्लाउड स्टोरेज और क्लाउड पब/सब से बैकग्राउंड फ़ंक्शन ट्रिगर होते हैं।
आप उत्पादन में तैनात करने से पहले उनका परीक्षण करने के लिए स्थानीय स्तर पर फ़ंक्शन चला सकते हैं।
फायरबेस सीएलआई स्थापित करें
क्लाउड फ़ंक्शंस एमुलेटर का उपयोग करने के लिए, पहले फायरबेस सीएलआई स्थापित करें:
npm install -g firebase-tools
स्थानीय एमुलेटर का उपयोग करने के लिए, आपके क्लाउड फ़ंक्शंस को इस पर निर्भर होना चाहिए:
-
firebase-admin
संस्करण8.0.0
या उच्चतर। -
firebase-functions
संस्करण3.0.0
या उच्चतर।
व्यवस्थापक क्रेडेंशियल सेट करें (वैकल्पिक)
यदि आप चाहते हैं कि आपके फ़ंक्शन परीक्षण फायरबेस एडमिन एसडीके के माध्यम से Google एपीआई या अन्य फायरबेस एपीआई के साथ इंटरैक्ट करें, तो आपको एडमिन क्रेडेंशियल सेट करने की आवश्यकता हो सकती है।
- क्लाउड फायरस्टोर और रीयलटाइम डेटाबेस ट्रिगर्स के पास पहले से ही पर्याप्त क्रेडेंशियल हैं, और उन्हें अतिरिक्त सेटअप की आवश्यकता नहीं है।
- ऑथेंटिकेशन और एफसीएम जैसे फायरबेस एपीआई या क्लाउड ट्रांसलेशन या क्लाउड स्पीच जैसे Google एपीआई सहित अन्य सभी एपीआई को इस अनुभाग में वर्णित सेटअप चरणों की आवश्यकता होती है। यह लागू होता है चाहे आप क्लाउड फ़ंक्शंस शेल या
firebase emulators:start
।
अनुकरणीय कार्यों के लिए व्यवस्थापक क्रेडेंशियल सेट करने के लिए:
- Google क्लाउड कंसोल का सेवा खाता फलक खोलें।
- सुनिश्चित करें कि ऐप इंजन डिफ़ॉल्ट सेवा खाता चयनित है, और क्रिएट कुंजी का चयन करने के लिए दाईं ओर विकल्प मेनू का उपयोग करें।
- संकेत मिलने पर, कुंजी प्रकार के लिए JSON चुनें और Create पर क्लिक करें।
डाउनलोड की गई कुंजी को इंगित करने के लिए अपने Google डिफ़ॉल्ट क्रेडेंशियल सेट करें:
यूनिक्स
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
खिड़कियाँ
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन परीक्षण एडमिन एसडीके का उपयोग करके फ़ायरबेस और Google एपीआई तक पहुंच सकते हैं। उदाहरण के लिए, प्रमाणीकरण ट्रिगर का परीक्षण करते समय, अनुकरणित फ़ंक्शन 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"
एमुलेटर से बात करने के लिए अपने ऐप को उपकरण दें
अपने ऐप को एमुलेटर के साथ इंटरैक्ट करने के लिए, आपको कुछ अतिरिक्त कॉन्फ़िगरेशन करने की आवश्यकता हो सकती है।
कॉल करने योग्य कार्यों के लिए अपने ऐप को उपकरणित करें
यदि आपके प्रोटोटाइप और परीक्षण गतिविधियों में कॉल करने योग्य बैकएंड फ़ंक्शंस शामिल हैं, तो फायरबेस एमुलेटर के लिए क्लाउड फ़ंक्शंस के साथ इंटरैक्शन को इस तरह कॉन्फ़िगर करें:
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
पर्यावरण चर सेट होने पर फायरबेस एडमिन एसडीके स्वचालित रूप से इवेंटार्क एमुलेटर से कनेक्ट हो जाता है। आप डिफ़ॉल्ट पोर्ट को संशोधित कर सकते हैं जैसा कि कॉन्फिगर लोकल एमुलेटर सूट के तहत चर्चा की गई है।
जब पर्यावरण चर ठीक से कॉन्फ़िगर किए जाते हैं, तो फ़ायरबेस एडमिन एसडीके स्वचालित रूप से ईवेंट आर्क एमुलेटर को इवेंट भेजता है। बदले में, इवेंटार्क एमुलेटर किसी भी पंजीकृत हैंडलर को ट्रिगर करने के लिए क्लाउड फ़ंक्शंस एमुलेटर पर वापस कॉल करता है।
आप हैंडलर निष्पादन के विवरण के लिए एमुलेटर सूट यूआई में फ़ंक्शन लॉग की जांच कर सकते हैं।
अन्य सेवाओं के साथ सहभागिता
एमुलेटर सुइट में कई एमुलेटर शामिल हैं, जो क्रॉस-प्रोडक्ट इंटरैक्शन के परीक्षण को सक्षम करते हैं।
क्लाउड फायरस्टोर
यदि आपके पास ऐसे फ़ंक्शन हैं जो क्लाउड फायरस्टोर पर लिखने के लिए फायरबेस एडमिन एसडीके का उपयोग करते हैं, तो ये लेखन क्लाउड फायरस्टोर एमुलेटर पर भेजा जाएगा यदि यह चल रहा है। यदि उन राइट्स द्वारा आगे के फ़ंक्शन ट्रिगर किए जाते हैं, तो उन्हें क्लाउड फ़ंक्शंस एमुलेटर में चलाया जाएगा।
घन संग्रहण
यदि आपके पास ऐसे फ़ंक्शन हैं जो क्लाउड स्टोरेज पर लिखने के लिए फायरबेस एडमिन एसडीके (संस्करण 9.7.0 या उच्चतर) का उपयोग करते हैं, तो ये लेखन क्लाउड स्टोरेज एमुलेटर पर भेजा जाएगा यदि यह चल रहा है। यदि उन राइट्स द्वारा आगे के फ़ंक्शन ट्रिगर किए जाते हैं, तो उन्हें क्लाउड फ़ंक्शंस एमुलेटर में चलाया जाएगा।
फायरबेस प्रमाणीकरण
यदि आपके पास ऐसे फ़ंक्शन हैं जो फ़ायरबेस प्रमाणीकरण पर लिखने के लिए फ़ायरबेस एडमिन एसडीके (संस्करण 9.3.0 या उच्चतर) का उपयोग करते हैं, तो ये लेखन ऑथ एमुलेटर को भेजा जाएगा यदि यह चल रहा है। यदि उन राइट्स द्वारा आगे के फ़ंक्शन ट्रिगर किए जाते हैं, तो उन्हें क्लाउड फ़ंक्शंस एमुलेटर में चलाया जाएगा।
फायरबेस होस्टिंग
यदि आप फायरबेस होस्टिंग के लिए गतिशील सामग्री उत्पन्न करने के लिए क्लाउड फ़ंक्शंस का उपयोग कर रहे हैं, firebase emulators:start
होस्टिंग के लिए प्रॉक्सी के रूप में आपके स्थानीय HTTP फ़ंक्शंस का उपयोग करता है।
लॉगिंग
एम्यूलेटर आपके फ़ंक्शन से लॉग को टर्मिनल विंडो पर स्ट्रीम करता है जहां वे चलते हैं। यह आपके फ़ंक्शन के अंदर console.log()
, console.info()
, console.error()
, और console.warn()
स्टेटमेंट से सभी आउटपुट प्रदर्शित करता है।
अगले कदम
फायरबेस एमुलेटर सुइट का उपयोग करने के पूर्ण उदाहरण के लिए, परीक्षण क्विकस्टार्ट नमूना देखें।