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 के एपीआई या Firebase के अन्य एपीआई के साथ इंटरैक्ट करना है, तो आपको एडमिन क्रेडेंशियल सेट अप करने पड़ सकते हैं.
- Cloud Firestore और Realtime Database ट्रिगर के पास पहले से ही ज़रूरी क्रेडेंशियल होते हैं. इसलिए, इन्हें अलग से सेट अप करने की ज़रूरत नहीं होती.
- Firebase के एपीआई (जैसे, Authentication और FCM) या Google के एपीआई (जैसे, 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
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन के टेस्ट, Admin SDK टूल का इस्तेमाल करके Firebase और
Google के एपीआई को ऐक्सेस कर सकते हैं. उदाहरण के लिए,
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
एम्युलेटर सुइट चलाना
Cloud Functions एम्युलेटर चलाने के लिए, emulators:start कमांड का इस्तेमाल करें:
firebase emulators:start
emulators:start कमांड, Cloud Firestore, रीयलटाइम डेटाबेस, और Firebase होस्टिंग के लिए एम्युलेटर शुरू करेगा. यह इस पर निर्भर करता है कि आपने firebase
init का इस्तेमाल करके, अपने लोकल प्रोजेक्ट में किन प्रॉडक्ट को शुरू किया है.Cloud Functions अगर आपको कोई खास एम्युलेटर शुरू करना है, तो --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 alerts एम्युलेटर
बैकग्राउंड इवेंट को ट्रिगर करने के लिए, बैक-एंड के संसाधनों में बदलाव करें. इसके अलावा, अपने प्लैटफ़ॉर्म के लिए एसडीके टूल का इस्तेमाल करके, अपने ऐप्लिकेशन या टेस्ट कोड को एम्युलेटर से कनेक्ट करें.Emulator Suite UI
एक्सटेंशन से जनरेट होने वाले कस्टम इवेंट के लिए, हैंडलर टेस्ट करना
Cloud Functions Cloud Functions v2 की मदद से, Firebase एक्सटेंशन के Firebase Extensions कस्टम इवेंट को हैंडल करने के लिए लागू किए गए फ़ंक्शन के लिए, Cloud Functions एम्युलेटर, Eventarc ट्रिगर के साथ काम करने के लिए, Eventarc एम्युलेटर के साथ पेयर होता है.Cloud Functions
एक्सटेंशन के कस्टम इवेंट हैंडलर को टेस्ट करने के लिए, आपको Cloud Functions और Eventarc एम्युलेटर इंस्टॉल करने होंगे.
अगर Eventarc एम्युलेटर चल रहा है, तो Cloud Functions रनटाइम, मौजूदा प्रोसेस में EVENTARC_EMULATOR एनवायरमेंट
वैरिएबल को localhost:9299 पर सेट करता है. Firebase Admin SDKs एनवायरमेंट वैरिएबल सेट होने पर, Eventarc
एम्युलेटर अपने-आप EVENTARC_EMULATOR से कनेक्ट हो जाते हैं. डिफ़ॉल्ट पोर्ट में बदलाव करने के बारे में जानकारी पाने के लिए, Configure Local Emulator Suite लेख पढ़ें.
एनवायरमेंट वैरिएबल के सही तरीके से कॉन्फ़िगर होने पर, Firebase Admin SDK इवेंट को Eventarc एम्युलेटर पर अपने-आप भेज देता है. इसके बाद, Eventarc एम्युलेटर, रजिस्टर किए गए किसी भी हैंडलर को ट्रिगर करने के लिए, Cloud Functions एम्युलेटर को वापस कॉल करता है.
हैंडलर के एक्ज़ीक्यूशन के बारे में जानकारी पाने के लिए, Emulator Suite UI में, Functions के लॉग देखें.
अन्य सेवाओं से इंटरैक्शन
एम्युलेटर सुइट में कई एम्युलेटर शामिल होते हैं. इनकी मदद से, अलग-अलग प्रॉडक्ट के बीच होने वाले इंटरैक्शन को टेस्ट किया जा सकता है.
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 Admin SDK टूल (वर्शन 9.3.0 या इसके बाद का वर्शन) का इस्तेमाल करके Firebase Authentication में लिखते हैं, तो ये राइट, Auth एम्युलेटर को भेजे जाएंगे. हालांकि, ऐसा तब होगा, जब वह चल रहा हो. अगर उन राइट से अन्य फ़ंक्शन ट्रिगर होते हैं, वे Cloud Functions एम्युलेटर में चलेंगे.
Firebase होस्टिंग
अगर Cloud Functions का इस्तेमाल करके डाइनैमिक कॉन्टेंट जनरेट किया जा रहा है
Firebase Hosting, तो firebase emulators:start
होस्टिंग के लिए प्रॉक्सी के तौर पर, आपके स्थानीय एचटीटीपी फ़ंक्शन का इस्तेमाल करता है.
Firebase alerts
किसी भी ऐसे प्रोजेक्ट में जिसमें Firebase के चेतावनियों से जुड़ा कम से कम एक काम करने वाला ट्रिगर शामिल है, एम्युलेटर यूज़र इंटरफ़ेस (यूआई) में FireAlerts टैब शामिल होता है. चेतावनी के ट्रिगर को एम्युलेट करने के लिए:
- FireAlerts टैब खोलें. इस टैब में, एक ड्रॉपडाउन दिखता है. इसमें, चेतावनियों के उन टाइप की सूची होती है जिनसे जुड़े ट्रिगर मौजूद हैं. उदाहरण के लिए, अगर आपके पास onNewFatalIssuePublished ट्रिगर है, तो crashlytics.newFatalIssue दिखता है.
- चेतावनी का कोई टाइप चुनें. फ़ॉर्म में डिफ़ॉल्ट वैल्यू अपने-आप भर जाती हैं. इनमें बदलाव किया जा सकता है. इवेंट के फ़ील्ड में बदलाव किया जा सकता है. चेतावनी के इवेंट से जुड़ी अन्य जानकारी, अनुमान के आधार पर, मॉक वैल्यू के तौर पर या रैंडम तरीके से जनरेट की जाती है.
- फ़ंक्शन एम्युलेटर को सिंथेटिक चेतावनी भेजने के लिए, चेतावनी भेजें को चुनें. इसकी लॉगिंग, Firebase कंसोल में चेतावनी में उपलब्ध होती है. साथ ही, यह लॉग में भी उपलब्ध होती है.
अगले चरण
Firebase एम्युलेटर सुइट का इस्तेमाल करने का पूरा उदाहरण देखने के लिए, टेस्टिंग के लिए क्विकस्टार्ट का सैंपल देखें.