Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

הפעל פונקציות באופן מקומי

ה- Firebase CLI כולל אמולטור פונקציות ענן שיכול לחקות את סוגי הפונקציות הבאים:

  • פונקציות HTTPS
  • פונקציות הניתנות להתקשרות
  • פונקציות רקע מופעלות מאימות, מסד נתונים בזמן אמת, ענן Firestore ו- Cloud Pub / Sub.

באפשרותך להפעיל פונקציות באופן מקומי כדי לבדוק אותן לפני פריסתן לייצור.

התקן את ה- CLI של Firebase

כדי להשתמש באמולטור פונקציות הענן, התקן תחילה את ה- Firebase CLI:

npm install -g firebase-tools

על מנת להשתמש באמולטור המקומי, פונקציות הענן שלך חייבות להיות תלויות ב:

  • firebase-admin גרסה 8.0.0 ומעלה.
  • firebase-functions גרסה 3.0.0 ומעלה.

הגדר אישורי מנהל מערכת (אופציונלי)

אם ברצונך שבדיקות הפונקציות שלך יקיימו אינטראקציה עם ממשקי API של Google או ממשקי API נוספים של Firebase באמצעות Firebase Admin SDK , ייתכן שתצטרך להגדיר אישורי מנהל מערכת.

  • ענן Firestore ואת זמן אמת טריגרים Database יש כבר אישורים מספקים, ואינם דורשים התקנה נוספת.
  • כל ממשקי ה- API האחרים, כולל ממשקי API של Firebase כמו אימות ו- FCM או ממשקי API של Google כגון תרגום ענן או דיבור בענן, דורשים את שלבי ההתקנה המתוארים בסעיף זה. זה חל בין אם אתה משתמש בפונקציות מעטפת או firebase emulators:start .

כדי להגדיר אישורי מנהל עבור פונקציות מדומות:

  1. פתח את חלונית חשבונות השירות במסוף ענן Google.
  2. ודא שנבחר חשבון שירות ברירת המחדל של App Engine , והשתמש בתפריט האפשרויות בצד ימין כדי לבחור צור מפתח .
  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
    

לאחר השלמת שלבים אלה, בדיקות הפונקציות שלך יכולות לגשת ל- Firebase ו- API של Google באמצעות ה- SDK של מנהל המערכת . לדוגמא, בעת בדיקת מפעיל אימות, הפונקציה המדומה יכולה להתקשר ל 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 תפעיל אמולטורים לפונקציות ענן, Cloud Firestore, Realtime Database ו- Firebase Hosting בהתבסס על המוצרים firebase init בפרויקט המקומי שלך באמצעות firebase init . אם ברצונך להפעיל אמולטור מסוים, השתמש בדגל - --only :

firebase emulators:start --only functions

אם ברצונך להריץ חבילת בדיקה או סקריפט בדיקה לאחר תחילת האמולטורים, השתמש בפקודה emulators:exec :

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

מכשיר את האפליקציה שלך לדבר עם האמולטורים

כדי לאפשר לאפליקציה שלך ליצור אינטראקציה עם האמולטורים, ייתכן שיהיה עליך לבצע תצורה נוספת.

מכשיר את האפליקציה שלך לפונקציות הניתנות להתקשרות

אם האב טיפוס שלך ופעילויות הבדיקה שלך כוללות פונקציות backend הניתנות להתקשרות , הגדר את האינטראקציה עם אמולטור ה- Cloud Functions עבור Firebase כך:

דְמוּי אָדָם
        // 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);
iOS - סוויפט
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

אינטרנט v8

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

אינטרנט v9

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

const functions = getFunctions(getApp());
useFunctionsEmulator(functions, "localhost", 5001);

מכשיר את האפליקציה שלך להדמיית פונקציות HTTPS

כל פונקציית HTTPS בקוד שלך תוגש מהאמולטור המקומי באמצעות פורמט ה- URL הבא:

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

לדוגמא פונקציית helloWorld פשוטה עם יציאת המארח והאזור המוגדרת כברירת מחדל תוגש בכתובת:

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

מכשיר את האפליקציה שלך להדמיית פונקציות המופעלות ברקע

אמולטור פונקציות הענן תומך בפונקציות המופעלות ברקע מהמקורות הבאים:

  • אמולטור מסד נתונים בזמן אמת
  • אמולטור Firestore בענן
  • אמולטור אימות
  • אמולטור פאב / משנה

כדי להפעיל אירועי רקע, חבר את האפליקציה שלך או בקוד קוד לאמולטורים באמצעות SDK לפלטפורמה שלך.

אינטראקציות עם שירותים אחרים

חבילת האימולטור כוללת מספר אמולטורים המאפשרים בדיקת אינטראקציות בין מוצרים.

ענן Firestore

אם יש לך פונקציות ענן המשתמשות ב- Firebase Admin SDK כדי לכתוב ל- Cloud Firestore, כתיבות אלה יישלחו לאמולטור Cloud Firestore אם הוא פועל. אם כתובות אלה מופעלות פונקציות ענן נוספות, הן יופעלו באמולטור פונקציות הענן.

אירוח Firebase

אם אתה משתמש בפונקציות ענן כדי ליצור תוכן דינמי לאירוח Firebase , firebase emulators:start Firebase firebase emulators:start משתמש בפונקציות ה- HTTP המקומיות שלך כ- proxies לאירוח.

רישום

האמולטור מזרים יומנים מהפונקציות שלך לחלון המסוף שבו הם פועלים. הוא מציג את כל הפלט console.log() , console.info() , console.error() ו- console.warn() בפונקציות שלך.

הצעדים הבאים

לקבלת דוגמה מלאה לשימוש בחבילת האימולטור של Firebase, עיין במדגם ההתחלה המהירה לבדיקה .