توابع را به صورت محلی اجرا کنید

Firebase CLI شامل یک شبیه ساز توابع ابری است که می تواند انواع عملکردهای زیر را شبیه سازی کند:

  • توابع HTTPS
  • توابع قابل فراخوانی
  • توابع پس‌زمینه از احراز هویت Firebase، پایگاه داده بیدرنگ، Cloud Firestore، Cloud Storage و Cloud Pub/Sub فعال می‌شوند.

شما می توانید توابع را به صورت محلی اجرا کنید تا آنها را قبل از استقرار در تولید آزمایش کنید.

Firebase CLI را نصب کنید

برای استفاده از شبیه ساز Cloud Functions، ابتدا Firebase CLI را نصب کنید:

npm install -g firebase-tools

برای استفاده از شبیه ساز محلی، توابع Cloud شما باید به موارد زیر بستگی داشته باشد:

  • firebase-admin نسخه 8.0.0 یا بالاتر.
  • firebase-functions نسخه 3.0.0 یا بالاتر.

تنظیم اعتبار مدیریت (اختیاری)

اگر می‌خواهید آزمایش‌های عملکرد شما با Google API یا سایر APIهای Firebase از طریق Firebase Admin SDK تعامل داشته باشند، ممکن است لازم باشد اعتبارنامه‌های سرپرست را تنظیم کنید.

  • راه‌اندازهای Cloud Firestore و Realtime Database از قبل دارای اعتبار کافی هستند و نیازی به تنظیمات اضافی ندارند .
  • همه APIهای دیگر، از جمله APIهای Firebase مانند Authentication و FCM یا APIهای Google مانند Cloud Translation یا Cloud Speech، به مراحل راه اندازی توضیح داده شده در این بخش نیاز دارند. چه از پوسته توابع Cloud یا firebase emulators:start استفاده کنید، این امر صدق می کند.

برای تنظیم اعتبار مدیریت برای توابع شبیه سازی شده:

  1. صفحه حساب‌های سرویس کنسول Google Cloud را باز کنید.
  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
    

پس از تکمیل این مراحل، آزمایش‌های عملکرد شما می‌توانند با استفاده از 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

مجموعه شبیه ساز را اجرا کنید

برای اجرای شبیه ساز Cloud Functions، از دستور emulators:start استفاده کنید:

firebase emulators:start

دستور emulators:start شبیه سازهایی را برای توابع Cloud، Cloud Firestore، پایگاه داده بیدرنگ، و میزبانی Firebase بر اساس محصولاتی که در پروژه محلی خود با استفاده از firebase init مقداردهی اولیه کرده اید، راه اندازی می کند. اگر می خواهید شبیه ساز خاصی را راه اندازی کنید، از پرچم --only استفاده کنید:

firebase emulators:start --only functions

اگر می خواهید یک مجموعه آزمایشی یا اسکریپت آزمایشی را پس از شروع شبیه سازها اجرا کنید، از دستور emulators:exec استفاده کنید:

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

برنامه خود را برای صحبت با شبیه سازها ابزار کنید

برای اینکه برنامه خود را برای تعامل با شبیه سازها تنظیم کنید، ممکن است نیاز به انجام برخی تنظیمات اضافی داشته باشید.

برنامه خود را برای توابع قابل فراخوانی ابزار کنید

اگر نمونه اولیه و فعالیت های آزمایشی شما شامل توابع پشتیبان قابل فراخوانی است، تعامل با شبیه ساز Cloud Functions for 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

برنامه خود را برای شبیه‌سازی توابع فعال در پس‌زمینه ابزار کنید

شبیه ساز Cloud Functions از توابع فعال در پس زمینه از منابع زیر پشتیبانی می کند:

  • شبیه ساز پایگاه داده بیدرنگ
  • شبیه ساز Cloud Firestore
  • شبیه ساز احراز هویت
  • شبیه ساز Pub/Sub

برای راه‌اندازی رویدادهای پس‌زمینه، منابع پشتیبان را با استفاده از رابط کاربری Emulator Suite یا با اتصال برنامه یا کد آزمایشی خود به شبیه‌سازها با استفاده از SDK برای پلتفرم خود تغییر دهید.

کنترل کننده ها را برای رویدادهای سفارشی منتشر شده توسط Extensions آزمایش کنید

برای عملکردهایی که برای مدیریت رویدادهای سفارشی Firebase Extensions با Cloud Functions v2 پیاده‌سازی می‌کنید، شبیه‌ساز Cloud Functions با شبیه‌ساز Eventarc جفت می‌شود تا از راه‌اندازهای Eventarc پشتیبانی کند.

برای آزمایش کنترل‌کننده‌های رویداد سفارشی برای برنامه‌های افزودنی که رویدادها را منتشر می‌کنند، باید شبیه‌سازهای Cloud Functions و Eventarc را نصب کنید.

اگر شبیه‌ساز Eventarc در حال اجرا باشد، زمان اجرا Cloud Functions، متغیر محیطی EVENTARC_EMULATOR را روی localhost:9299 تنظیم می‌کند. هنگامی که متغیر محیطی EVENTARC_EMULATOR تنظیم می شود، SDK های مدیریت Firebase به طور خودکار به شبیه ساز Eventarc متصل می شوند. می‌توانید پورت پیش‌فرض را همانطور که در Configure Local Emulator Suite توضیح داده شد، تغییر دهید.

هنگامی که متغیرهای محیطی به درستی پیکربندی شوند، Firebase Admin SDK به طور خودکار رویدادها را به شبیه ساز Eventarc ارسال می کند. به نوبه خود، شبیه ساز Eventarc با شبیه ساز Cloud Functions تماس می گیرد تا هر کنترل کننده ثبت شده را فعال کند.

می‌توانید گزارش‌های Functions را در رابط کاربری Emulator Suite برای جزئیات در مورد اجرای کنترلر بررسی کنید.

تعامل با سایر خدمات

مجموعه شبیه ساز شامل چندین شبیه ساز است که امکان تست تعاملات بین محصول را فراهم می کند.

Cloud Firestore

اگر توابعی دارید که از Firebase Admin SDK برای نوشتن در Cloud Firestore استفاده می‌کند، این نوشته‌ها در صورت اجرا به شبیه‌ساز Cloud Firestore ارسال می‌شوند. اگر توابع بیشتری توسط این نوشته ها فعال شوند، در شبیه ساز توابع ابری اجرا می شوند.

فضای ذخیره ابری

اگر توابعی دارید که از Firebase Admin SDK (نسخه 9.7.0 یا بالاتر) برای نوشتن در Cloud Storage استفاده می کند، این نوشته ها در صورت اجرا به شبیه ساز Cloud Storage ارسال می شوند. اگر توابع بیشتری توسط این نوشته ها فعال شوند، در شبیه ساز توابع ابری اجرا می شوند.

احراز هویت Firebase

اگر توابعی دارید که از Firebase Admin SDK (نسخه 9.3.0 یا بالاتر) برای نوشتن در Firebase Authentication استفاده می کند، این نوشته ها در صورت اجرا به شبیه ساز Auth ارسال می شوند. اگر توابع بیشتری توسط این نوشته ها فعال شوند، در شبیه ساز توابع ابری اجرا می شوند.

میزبانی Firebase

اگر از توابع Cloud برای تولید محتوای پویا برای میزبانی Firebase استفاده می کنید، firebase emulators:start از توابع HTTP محلی شما به عنوان پراکسی برای میزبانی استفاده می کند.

ورود به سیستم

شبیه‌ساز گزارش‌ها را از توابع شما به پنجره ترمینال که در آن اجرا می‌شوند، پخش می‌کند. تمام خروجی های console.log() ، console.info() ، console.error() و console.warn() را در داخل توابع شما نمایش می دهد.

مراحل بعدی

برای مثال کامل استفاده از مجموعه شبیه ساز Firebase، نمونه شروع سریع آزمایشی را ببینید.