Firebase CLI में Cloud Functions एम्युलेटर शामिल होता है. यह इन फ़ंक्शन टाइप को एम्युलेट कर सकता है:
- एचटीटीपीएस फ़ंक्शन
- कॉल किए जा सकने वाले फ़ंक्शन
- टास्क सूची के फ़ंक्शन
- Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, Firebase की सूचनाओं, और Cloud Pub/Sub से ट्रिगर होने वाले बैकग्राउंड फ़ंक्शन.
फ़ंक्शन को प्रोडक्शन में डिप्लॉय करने से पहले, उनकी जांच करने के लिए उन्हें स्थानीय तौर पर चलाया जा सकता है.
Firebase CLI इंस्टॉल करना
Cloud Functions एम्युलेटर का इस्तेमाल करने के लिए, पहले Firebase CLI इंस्टॉल करें:
npm install -g firebase-tools
लोकल एम्युलेटर का इस्तेमाल करने के लिए, आपके Cloud Functions को इन पर निर्भर होना चाहिए:
firebase-adminका वर्शन8.0.0या इसके बाद का वर्शन.firebase-functionsका वर्शन3.0.0या इसके बाद का वर्शन.
एडमिन क्रेडेंशियल सेट अप करना (ज़रूरी नहीं)
अगर आपको फ़ंक्शन की जांच के दौरान, Firebase Admin SDK की मदद से Google API या अन्य Firebase API के साथ इंटरैक्ट करना है, तो आपको एडमिन क्रेडेंशियल सेट अप करने पड़ सकते हैं.
- Cloud Firestore और Realtime Database ट्रिगर के पास पहले से ही ज़रूरी क्रेडेंशियल हैं. इसलिए, इन्हें अतिरिक्त सेटअप की ज़रूरत नहीं है.
- अन्य सभी एपीआई के लिए, इस सेक्शन में बताया गया सेटअप का तरीका अपनाना ज़रूरी है. इनमें Firebase एपीआई, जैसे कि Authentication और FCM या Google APIs, जैसे कि Cloud Translation या Cloud Speech शामिल हैं. यह तब लागू होता है, जब Cloud Functions शेल या
firebase emulators:startका इस्तेमाल किया जा रहा हो.
एम्युलेट किए गए फ़ंक्शन के लिए एडमिन क्रेडेंशियल सेट अप करने के लिए:
- Google Cloud कंसोल का सेवा खाते वाला पैनल खोलें.
- पक्का करें कि App Engine डिफ़ॉल्ट सेवा खाता चुना गया हो. इसके बाद, दाईं ओर मौजूद विकल्प मेन्यू का इस्तेमाल करके, कुंजी बनाएं को चुनें.
- जब आपसे पूछा जाए, तब कुंजी के टाइप के लिए JSON चुनें. इसके बाद, बनाएं पर क्लिक करें.
डाउनलोड की गई कुंजी पर ले जाने के लिए, Google के डिफ़ॉल्ट क्रेडेंशियल सेट करें:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
खिड़कियां
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन की जांच Admin SDK का इस्तेमाल करके, Firebase और Google API को ऐक्सेस कर सकते हैं. उदाहरण के लिए, Authentication ट्रिगर को टेस्ट करते समय, एम्युलेट किया गया फ़ंक्शन 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
Emulator Suite को चलाना
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"
शुरू होने के बाद, इम्यूलेटर आपके फ़ंक्शन से लॉग को उस टर्मिनल विंडो पर स्ट्रीम करता है जहां वह चलता है. यह आपके फ़ंक्शन में मौजूद console.log(), console.info(), console.error(), और console.warn() स्टेटमेंट के सभी आउटपुट दिखाता है.
ध्यान दें कि एम्युलेटर आउटपुट, डिफ़ॉल्ट रूप से किसी खास इलाके (us-central1) में फ़ंक्शन की डिप्लॉयमेंट को सिम्युलेट करता है. ऐसा हो सकता है कि यह इलाका, असल प्रोडक्शन डिप्लॉयमेंट के डिफ़ॉल्ट इलाके से मैच न करे. क्षेत्रों के बारे में ज़्यादा जानकारी के लिए, Cloud Functions जगहों पर जाएं.
एम्युलेटर से बात करने के लिए, अपने ऐप्लिकेशन को इंस्ट्रुमेंट करें
एम्युलेटर के साथ इंटरैक्ट करने के लिए, आपको अपने ऐप्लिकेशन में कुछ और कॉन्फ़िगरेशन करने पड़ सकते हैं.
कॉल किए जा सकने वाले फ़ंक्शन के लिए, अपने ऐप्लिकेशन को इंस्ट्रुमेंट करना
अगर आपके प्रोटोटाइप और टेस्ट की गतिविधियों में कॉल किए जा सकने वाले बैकएंड फ़ंक्शन शामिल हैं, तो Cloud Functions for Firebase एम्युलेटर के साथ इंटरैक्शन को इस तरह कॉन्फ़िगर करें:
Kotlin
// 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().useEmulator(withHost: "localhost", port: 5001)
Unity
FirebaseFunctions functions = FirebaseFunctions.DefaultInstance; // Connects to the Functions Emulator running on port 5001 functions.UseFunctionsEmulator("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
टास्क सूची के फ़ंक्शन को एम्युलेट करने के लिए, अपने ऐप्लिकेशन को इंस्ट्रुमेंट करना
एम्युलेटर, ट्रिगर की परिभाषाओं के आधार पर, एम्युलेट की गई टास्क सूची अपने-आप सेट अप करता है. साथ ही, अगर Admin SDK को पता चलता है कि एम्युलेटर, CLOUD_TASKS_EMULATOR_HOST एनवायरमेंट वैरिएबल के ज़रिए चल रहा है, तो वह सूची में शामिल अनुरोधों को एम्युलेटर पर फिर से भेजता है.
ध्यान दें कि प्रोडक्शन में इस्तेमाल किया जाने वाला डिस्पैच सिस्टम, एम्युलेटर में लागू किए गए सिस्टम की तुलना में ज़्यादा जटिल होता है. इसलिए, आपको एम्युलेट किए गए व्यवहार से प्रोडक्शन एनवायरमेंट को सटीक रूप से दिखाने की उम्मीद नहीं करनी चाहिए. एम्युलेटर में मौजूद पैरामीटर, टास्क को भेजने और फिर से कोशिश करने की दर की ऊपरी सीमा तय करते हैं.
बैकग्राउंड में ट्रिगर होने वाले फ़ंक्शन को एम्युलेट करने के लिए, अपने ऐप्लिकेशन को इंस्ट्रुमेंट करना
Cloud Functions एम्युलेटर, इन सोर्स से बैकग्राउंड में ट्रिगर होने वाले फ़ंक्शन के साथ काम करता है:
- Realtime Database एम्युलेटर
- Cloud Firestore एम्युलेटर
- Authentication एम्युलेटर
- Pub/Sub एम्युलेटर
- Firebase अलर्ट एम्युलेटर
बैकग्राउंड इवेंट ट्रिगर करने के लिए, Emulator Suite UI का इस्तेमाल करके बैक-एंड रिसॉर्स में बदलाव करें. इसके अलावा, अपने प्लैटफ़ॉर्म के लिए एसडीके का इस्तेमाल करके, अपने ऐप्लिकेशन या टेस्ट कोड को एम्युलेटर से कनेक्ट करें.
एक्सटेंशन से ट्रिगर होने वाले कस्टम इवेंट के लिए, टेस्ट हैंडलर
Cloud Functions v2 की मदद से Firebase Extensions कस्टम इवेंट को मैनेज करने के लिए लागू किए जाने वाले फ़ंक्शन के लिए, Cloud Functions एम्युलेटर, Eventarc एम्युलेटर के साथ जुड़ जाता है. इससे Eventarc ट्रिगर को सपोर्ट मिलता है.
इवेंट ट्रिगर करने वाले एक्सटेंशन के लिए, कस्टम इवेंट हैंडलर की जांच करने के लिए, आपको Cloud Functions और Eventarc एमुलेटर इंस्टॉल करने होंगे.
अगर Eventarc एम्युलेटर चल रहा है, तो Cloud Functions रनटाइम, मौजूदा प्रोसेस में EVENTARC_EMULATOR एनवायरमेंट वैरिएबल को localhost:9299 पर सेट करता है. EVENTARC_EMULATOR एनवायरमेंट वैरिएबल सेट होने पर, Firebase Admin SDKs अपने-आप Eventarc एमुलेटर से कनेक्ट हो जाते हैं. Local Emulator Suite को कॉन्फ़िगर करें में बताए गए तरीके से, डिफ़ॉल्ट पोर्ट में बदलाव किया जा सकता है.
एनवायरमेंट वैरिएबल सही तरीके से कॉन्फ़िगर होने पर, Firebase Admin SDK Eventarc एम्युलेटर को अपने-आप इवेंट भेजता है. इसके बाद, Eventarc एमुलेटर, Cloud Functions एमुलेटर को कॉल बैक करता है, ताकि रजिस्टर किए गए किसी भी हैंडलर को ट्रिगर किया जा सके.
हैंडलर के लागू होने की जानकारी के लिए, Emulator Suite UI में फ़ंक्शन लॉग देखे जा सकते हैं.
अन्य सेवाओं के साथ इंटरैक्शन
Emulator Suite में कई एमुलेटर शामिल होते हैं. इनकी मदद से, क्रॉस-प्रॉडक्ट इंटरैक्शन की जांच की जा सकती है.
Cloud Firestore
अगर आपके पास ऐसे फ़ंक्शन हैं जो Cloud Firestore में डेटा लिखने के लिए Firebase Admin SDK का इस्तेमाल करते हैं, तो ये डेटा Cloud Firestore एम्युलेटर को भेजे जाएंगे. हालांकि, ऐसा तब होगा, जब एम्युलेटर चल रहा हो. अगर उन राइट से अन्य फ़ंक्शन ट्रिगर होते हैं, तो वे Cloud Functions एम्युलेटर में चलेंगे.
Cloud Storage
अगर आपके पास ऐसे फ़ंक्शन हैं जो Cloud Storage में डेटा लिखने के लिए, Firebase Admin SDK (वर्शन 9.7.0 या इसके बाद का वर्शन) का इस्तेमाल करते हैं, तो यह डेटा Cloud Storage एम्युलेटर को भेजा जाएगा. हालांकि, ऐसा तब होगा, जब एम्युलेटर चालू हो. अगर उन राइट से अन्य फ़ंक्शन ट्रिगर होते हैं, तो वे Cloud Functions एम्युलेटर में चलेंगे.
Firebase Authentication
अगर आपके पास ऐसे फ़ंक्शन हैं जो Firebase Authentication में लिखने के लिए, Firebase Admin SDK (वर्शन 9.3.0 या इसके बाद का वर्शन) का इस्तेमाल करते हैं, तो ये राइट, Auth एम्युलेटर को भेजे जाएंगे. हालांकि, ऐसा तब होगा, जब यह चालू हो. अगर उन राइट से अन्य फ़ंक्शन ट्रिगर होते हैं, तो वे Cloud Functions एम्युलेटर में चलेंगे.
Firebase होस्टिंग
अगर Firebase Hosting के लिए लगातार अपडेट होने वाली जानकारी जनरेट करने के लिए Cloud Functions का इस्तेमाल किया जा रहा है, तो firebase emulators:start
आपके लोकल एचटीटीपी फ़ंक्शन को होस्टिंग के लिए प्रॉक्सी के तौर पर इस्तेमाल करता है.
Firebase से मिलने वाली सूचनाएं
जिस प्रोजेक्ट में Firebase की सूचना ट्रिगर करने की सुविधा काम करती है उसके एम्युलेटर यूज़र इंटरफ़ेस (यूआई) में FireAlerts टैब शामिल होता है. अलर्ट ट्रिगर को एम्युलेट करने के लिए:
- FireAlerts टैब खोलें. इस टैब में, ट्रिगर से जुड़ी सूचनाओं के टाइप वाला ड्रॉपडाउन दिखता है. उदाहरण के लिए, अगर आपके पास onNewFatalIssuePublished ट्रिगर है, तो crashlytics.newFatalIssue दिखता है.
- सूचना का कोई टाइप चुनें. फ़ॉर्म में डिफ़ॉल्ट वैल्यू अपने-आप भर जाती हैं. इनमें बदलाव किया जा सकता है. इवेंट के फ़ील्ड में बदलाव किया जा सकता है. हालांकि, सूचना वाले इवेंट की अन्य जानकारी का अनुमान लगाया जाता है, मॉक वैल्यू होती है या उसे रैंडम तरीके से जनरेट किया जाता है.
- फ़ंक्शन एम्युलेटर को सिंथेटिक सूचना भेजने के लिए, सूचना भेजें को चुनें. इसकी लॉगिंग, Firebase कंसोल में सूचनाएं सेक्शन और लॉग में उपलब्ध होती है.
अगले चरण
Firebase Emulator Suite का इस्तेमाल करने का पूरा उदाहरण देखने के लिए, टेस्टिंग क्विकस्टार्ट सैंपल देखें.