اجرای توابع به‌صورت محلی

«واسط خط فرمان Firebase» شامل شبیه‌ساز Cloud Functions است که می‌تواند انواع تابع زیر را شبیه‌سازی کند:

  • کارکردهای HTTPS
  • توابع فراخواندنی
  • توابع صف تکلیف
  • توابع پس‌زمینه‌ای که از Firebase Authentication، Realtime Database، Cloud Firestore، Cloud Storage، هشدارهای پشتیبانی‌شده Firebase، و Cloud Pub/Sub راه‌اندازی می‌شوند.

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

نصب «واسط خط فرمان Firebase»

برای استفاده از شبیه‌ساز Cloud Functions، ابتدا «واسط خط فرمان Firebase» را نصب کنید:

npm install -g firebase-tools

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

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

راه‌اندازی اطلاعات اعتباری سرپرست (اختیاری)

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

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

برای تنظیم اطلاعات اعتباری سرپرست برای کارکردهای شبیه‌سازی‌شده:

  1. بخش «حساب‌های سرویس» کنسول Google Cloud را باز کنید.
  2. مطمئن شوید که App Engine حساب سرویس پیش‌فرض انتخاب شده باشد و از منو گزینه‌ها در سمت راست برای انتخاب ایجاد کلید استفاده کنید.
  3. وقتی از شما خواسته شد، JSON را برای نوع کلید انتخاب کنید و روی ایجاد کلیک کنید.
  4. اطلاعات اعتباری پیش‌فرض Google خود را تنظیم کنید تا به کلید بارگیری‌شده اشاره کند:

    Unix

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase emulators:start
    

    پنجره

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

پس‌از تکمیل این مراحل، تست‌های تابع شما می‌توانند بااستفاده از کیت توسعه نرم‌افزار سرپرست به Firebase و Google APIs دسترسی پیدا کنند. برای مثال، هنگام آزمایش راه‌انداز 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 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);

ابزاربندی برنامه برای شبیه‌سازی کارکردهای HTTPS

هر تابع HTTPS در کد شما بااستفاده از قالب نشانی وب زیر از شبیه‌ساز محلی ارائه خواهد شد:

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

برای مثال، تابع ساده helloWorld با درگاه میزبان و منطقه پیش‌فرض در این نشانی ارائه می‌شود:

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

برنامه‌تان را برای شبیه‌سازی کارکردهای صف تکلیف ابزاربندی کنید

شبیه‌ساز به‌طور خودکار صف‌های تکلیف شبیه‌سازی‌شده را براساس تعریف‌های راه‌انداز تنظیم می‌کند، و اگر «کیت توسعه نرم‌افزار سرپرست» تشخیص دهد که ازطریق متغیر محیط CLOUD_TASKS_EMULATOR_HOST درحال اجرا است، درخواست‌های درصف‌انتظار را به شبیه‌ساز هدایت می‌کند.

توجه داشته باشید که سیستم اعزام مورداستفاده در تولید پیچیده‌تر از سیستم پیاده‌سازی‌شده در شبیه‌ساز است، بنابراین نباید انتظار داشته باشید که رفتار شبیه‌سازی‌شده دقیقاً محیط‌های تولید را منعکس کند. پارامترهای درون شبیه‌ساز، کران‌های بالایی را برای نرخ ارسال و تلاش مجدد وظایف فراهم می‌کنند.

ابزاربندی برنامه برای شبیه‌سازی کارکردهای راه‌اندازی‌شده در پس‌زمینه

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

  • شبیه‌ساز Realtime Database
  • شبیه‌ساز Cloud Firestore
  • شبیه‌ساز Authentication
  • شبیه‌ساز Pub/Sub
  • شبیه‌ساز هشدارهای Firebase

برای راه‌اندازی رویدادهای پس‌زمینه‌ای، منابع زیرینه را بااستفاده از Emulator Suite UI، یا با متصل کردن برنامه یا کد آزمایشی خود به شبیه‌سازها بااستفاده از «کیت توسعه نرم‌افزار» برای پلاتفرم خود اصلاح کنید.

آزمایش کردن مدیریت‌کننده‌های رویدادهای سفارشی منتشرشده توسط «افزونه‌ها»

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

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

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

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

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

تعامل با سرویس‌های دیگر

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

Cloud Firestore

اگر توابعی دارید که از «کیت توسعه نرم‌افزار سرپرست Firebase» برای نوشتن در Cloud Firestore استفاده می‌کنند، این نوشتن‌ها به شبیه‌ساز Cloud Firestore ارسال خواهد شد اگر درحال اجرا باشد. اگر عملکردهای دیگری با آن نوشتن‌ها راه‌اندازی شوند، در شبیه‌ساز Cloud Functions اجرا خواهند شد.

Cloud Storage

اگر توابعی دارید که از «کیت توسعه نرم‌افزار Firebase Admin» (نسخه ۹.۷.۰ یا بالاتر) برای نوشتن در Cloud Storage استفاده می‌کنند، این نوشتن‌ها به شبیه‌ساز Cloud Storage ارسال خواهد شد اگر درحال اجرا باشد. اگر عملکردهای دیگری با آن نوشتن‌ها راه‌اندازی شوند، در شبیه‌ساز Cloud Functions اجرا خواهند شد.

Firebase Authentication

اگر توابعی دارید که از «کیت توسعه نرم‌افزار سرپرست Firebase» (نسخه ۹.۳.۰ یا بالاتر) برای نوشتن در Firebase Authentication استفاده می‌کنند، این نوشتن‌ها به شبیه‌ساز Auth ارسال خواهد شد اگر درحال اجرا باشد. اگر عملکردهای دیگری با آن نوشتن‌ها راه‌اندازی شوند، در شبیه‌ساز Cloud Functions اجرا خواهند شد.

میزبانی Firebase

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

هشدارهای Firebase

در هر پروژه‌ای که حداقل یک راه‌انداز هشدار Firebase پشتیبانی‌شده داشته باشد، رابط کاربری شبیه‌ساز شامل برگه FireAlerts است. برای شبیه‌سازی کردن راه‌اندازی هشدار:

  1. برگه FireAlerts (هشدار آتش‌سوزی) را باز کنید. این برگه منو کرکره‌ای را نمایش می‌دهد که با انواع هشدار که محرک‌های مرتبط با آن‌ها وجود دارد پر شده است (برای مثال، اگر محرک onNewFatalIssuePublished دارید، crashlytics.newFatalIssue نمایش داده می‌شود).
  2. نوع هشداری را انتخاب کنید. فرم به‌طور خودکار با مقادیر پیش‌فرض تکمیل می‌شود که می‌تواند ویرایش شود. می‌توانید فیلدهای رویداد را ویرایش کنید (سایر اطلاعات رویداد هشدار یا استنباط می‌شود، یا مقادیر ساختگی است، یا به‌صورت تصادفی تولید می‌شود).
  3. برای ارسال هشدار ترکیبی به شبیه‌ساز کارکردها، ارسال هشدار را انتخاب کنید، گزارش‌گیری در هشدارها در کنسول Firebase (و همچنین در گزارش‌ها) دردسترس است.

مراحل بعدی

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