在應用程式中使用 Extensions 模擬器之前,請務必瞭解 Firebase Local Emulator Suite 的整體工作流程,並安裝及設定 Local Emulator Suite,以及查看其 CLI 指令。
本指南也假設您熟悉 Firebase Extensions,以及如何在 Firebase 應用程式中使用。
Extensions 模擬器有哪些功能?
有了 Extensions 模擬器,您可以在安全的本機環境中安裝及管理擴充功能,進一步瞭解其功能,同時盡可能降低帳單費用。模擬器會在本機執行擴充功能函式,包括使用 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、Authentication 和 Pub/Sub 模擬器的背景事件觸發函式,以及在 Cloud Functions v2 中實作的 Eventarc 觸發函式。
選擇 Firebase 專案
Firebase Local Emulator Suite會模擬單一 Firebase 專案的產品。
如要選取要使用的專案,請在啟動模擬器前,在 CLI 的目前使用的目錄中執行 firebase use。或者,您也可以將 --project 旗標傳遞至每個模擬器指令。
Local Emulator Suite 支援模擬「實際」Firebase 專案和「示範」專案。
| 專案類型 | 功能 | 與模擬器搭配使用 |
|---|---|---|
| 實數 |
實際的 Firebase 專案是指您建立及設定的專案 (通常是透過 Firebase 控制台)。 實際專案含有實際資源,例如資料庫執行個體、Storage bucket、函式,或您為該 Firebase 專案設定的其他資源。 |
使用實際的 Firebase 專案時,您可以為任何或所有支援的產品執行模擬器。 對於未模擬的產品,應用程式和程式碼會與實際資源 (資料庫執行個體、儲存空間 bucket、函式等) 互動。 |
| 示範 |
Firebase 示範專案沒有「實際」Firebase 設定,也沒有任何實際資源。這類專案通常是透過程式碼實驗室或其他教學課程存取。 示範專案的專案 ID 具有 |
使用 Firebase 示範專案時,應用程式和程式碼「只會」與模擬器互動。如果應用程式嘗試與未執行模擬器的資源互動,該程式碼就會失敗。 |
建議您盡可能使用試用專案。包括以下優點:
- 設定更簡單,因為您不必建立 Firebase 專案,就能執行模擬器
- 安全性更高,因為如果程式碼不小心叫用非模擬 (正式環境) 資源,資料、用量和帳單就不會變更
- 更完善的離線支援,因為不需要連上網際網路,即可下載 SDK 設定。
安裝及評估擴充功能
使用 Extensions 模擬器,即可輕鬆評估擴充功能是否符合需求。
假設您對 Trigger Email (firestore-send-email) 擴充功能感興趣,不過以下工作流程適用於任何擴充功能。使用本機模擬器執行時,Trigger Email 會自動使用 Cloud Firestore 和 Cloud Functions 模擬器。
如要在本機評估擴充功能,請按照下列步驟操作:
將擴充功能新增至本機擴充功能資訊清單。擴充功能資訊清單是擴充功能執行個體及其設定的清單。
firebase ext:install --local firebase/firestore-send-email
執行上述指令後,系統會提示您設定最新版本的
firebase/firestore-send-email擴充功能,並將設定儲存至資訊清單,但不會將設定部署至專案。詳情請參閱「使用資訊清單管理擴充功能設定」。照常啟動 Local Emulator Suite。
firebase emulators:start
現在,Local Emulator Suite 會使用資訊清單中列出的 firestore-send-email 擴充功能執行個體,將該擴充功能的原始碼下載到 ~/.cache/firebase/extensions。下載來源後,Local Emulator Suite 就會啟動,您將能觸發任何擴充功能的背景觸發函式,並將應用程式連結至 Local Emulator Suite,測試與應用程式的整合。
您可以使用 Emulator Suite UI 將資料新增至電子郵件文件集合,並設定 Trigger Email 擴充功能所需的其他後端資源。
或者,如果是持續整合工作流程等非互動式測試環境,您可以編寫測試指令碼來評估擴充功能,其中包含填入必要的 Cloud Firestore 資料和觸發函式等步驟。接著,您會叫用 Local Emulator Suite 來執行測試指令碼:
firebase emulators:exec my-test.sh使用 Extensions 模擬器測試與實際執行環境的差異
Extensions 模擬器可讓您以最接近實際工作環境的方式測試擴充功能。不過,與實際工作環境行為有些差異。
Cloud IAM
Firebase 模擬器套件不會嘗試複製或遵循任何與 IAM 相關的執行行為。模擬器會遵循提供的 Firebase 安全性規則,但在通常會使用 IAM 的情況下 (例如設定 Cloud Functions 叫用服務帳戶,進而設定權限),模擬器無法設定,並會使用開發機器上的全域可用帳戶,類似於直接執行本機指令碼。
觸發類型限制
目前 Firebase Local Emulator Suite 僅支援 HTTP 要求觸發的函式、擴充功能的 Eventarc 自訂事件觸發條件,以及 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、Authentication 和 Pub/Sub 的背景事件觸發函式。如要評估使用其他類型觸發函式的擴充功能,您必須在測試 Firebase 專案中安裝擴充功能。
後續步驟
- 如需精選影片和詳細的 How-to 範例,請參閱 Firebase 模擬器訓練播放清單。