获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Chạy các chức năng cục bộ

Firebase CLI bao gồm trình giả lập Chức năng đám mây có thể mô phỏng các loại chức năng sau:

  • chức năng HTTPS
  • chức năng có thể gọi
  • Các chức năng nền được kích hoạt từ Xác thực Firebase, Cơ sở dữ liệu thời gian thực, Cloud Firestore, Cloud Storage và Cloud Pub/Sub.

Bạn có thể chạy các chức năng cục bộ để kiểm tra chúng trước khi triển khai vào sản xuất.

Cài đặt Firebase CLI

Để sử dụng trình giả lập Chức năng đám mây, trước tiên hãy cài đặt Firebase CLI:

npm install -g firebase-tools

Để sử dụng trình giả lập cục bộ, Chức năng đám mây của bạn phải phụ thuộc vào:

  • firebase-admin phiên bản 8.0.0 trở lên.
  • firebase-functions phiên bản 3.0.0 trở lên.

Thiết lập thông tin đăng nhập của quản trị viên (tùy chọn)

Nếu bạn muốn kiểm tra chức năng của mình tương tác với API Google hoặc API Firebase khác thông qua SDK quản trị Firebase , thì bạn có thể cần phải thiết lập thông tin xác thực của quản trị viên.

  • Trình kích hoạt Cơ sở dữ liệu thời gian thực và Cloud Firestore đã có đủ thông tin xác thực và không yêu cầu thiết lập bổ sung.
  • Tất cả các API khác, bao gồm API Firebase, chẳng hạn như Xác thực và FCM hoặc API Google, chẳng hạn như Cloud Translation hoặc Cloud Speech, đều yêu cầu các bước thiết lập được mô tả trong phần này. Điều này áp dụng cho dù bạn đang sử dụng firebase emulators:start .

Để thiết lập thông tin đăng nhập của quản trị viên cho các chức năng mô phỏng:

  1. Mở ngăn Tài khoản dịch vụ của Google Cloud Console.
  2. Đảm bảo rằng tài khoản dịch vụ mặc định của App Engine được chọn và sử dụng menu tùy chọn ở bên phải để chọn Tạo khóa .
  3. Khi được nhắc, hãy chọn JSON cho loại khóa và nhấp vào Tạo .
  4. Đặt thông tin đăng nhập mặc định của Google để trỏ đến khóa đã tải xuống:

    Unix

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

    các cửa sổ

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

Sau khi hoàn thành các bước này, các bài kiểm tra chức năng của bạn có thể truy cập vào Firebase và Google API bằng cách sử dụng SDK dành cho quản trị viên . Ví dụ: khi kiểm tra trình kích hoạt Xác thực, chức năng được mô phỏng có thể gọi admin.auth().getUserByEmail(email) .

Thiết lập cấu hình chức năng (tùy chọn)

Nếu bạn đang sử dụng các biến cấu hình chức năng tùy chỉnh, trước tiên hãy chạy lệnh để nhận cấu hình tùy chỉnh của bạn (chạy lệnh này trong thư mục functions ) trong môi trường cục bộ của bạn:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Chạy bộ giả lập

Để chạy trình mô phỏng Chức năng đám mây, hãy sử dụng lệnh emulators:start :

firebase emulators:start

Lệnh emulators:start sẽ khởi động trình giả lập cho Cloud Function, Cloud Firestore, Cơ sở dữ liệu thời gian thực và Lưu trữ Firebase dựa trên các sản phẩm bạn đã khởi tạo trong dự án cục bộ của mình bằng cách sử dụng firebase init . Nếu bạn muốn bắt đầu một trình giả lập cụ thể, hãy sử dụng --only cờ:

firebase emulators:start --only functions

Nếu bạn muốn chạy bộ thử nghiệm hoặc tập lệnh thử nghiệm sau khi trình giả lập đã khởi động, hãy sử dụng lệnh emulators:exec :

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

Thiết bị ứng dụng của bạn để nói chuyện với trình giả lập

Để cung cấp công cụ cho ứng dụng của bạn tương tác với trình giả lập, bạn có thể cần thực hiện một số cấu hình bổ sung.

Cung cấp ứng dụng của bạn cho các chức năng có thể gọi được

Nếu các hoạt động thử nghiệm và nguyên mẫu của bạn liên quan đến các chức năng phụ trợ có thể gọi được , hãy định cấu hình tương tác với trình giả lập Chức năng đám mây cho Firebase như sau:

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);
Nhanh
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

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

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

Web version 8

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

Cung cấp ứng dụng của bạn để mô phỏng chức năng HTTPS

Mỗi chức năng HTTPS trong mã của bạn sẽ được cung cấp từ trình giả lập cục bộ bằng định dạng URL sau:

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

Ví dụ: một chức năng helloWorld đơn giản với vùng và cổng máy chủ mặc định sẽ được phục vụ tại:

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

Thiết bị cho ứng dụng của bạn để mô phỏng các chức năng được kích hoạt trong nền

Trình mô phỏng Chức năng đám mây hỗ trợ các chức năng kích hoạt nền từ các nguồn sau:

  • Trình giả lập cơ sở dữ liệu thời gian thực
  • Trình giả lập Cloud Firestore
  • giả lập xác thực
  • Trình giả lập Pub/Sub

Để kích hoạt các sự kiện nền, hãy sửa đổi tài nguyên phía sau bằng cách sử dụng giao diện người dùng Bộ giả lập hoặc bằng cách kết nối ứng dụng hoặc mã thử nghiệm của bạn với trình giả lập bằng SDK dành cho nền tảng của bạn.

Trình xử lý thử nghiệm cho các sự kiện tùy chỉnh do Tiện ích mở rộng phát ra

Đối với các chức năng bạn triển khai để xử lý các sự kiện tùy chỉnh của Tiện ích mở rộng Firebase với Cloud Functions v2, trình giả lập Cloud Functions kết hợp với trình giả lập Eventarc để hỗ trợ trình kích hoạt Eventarc .

Để kiểm tra trình xử lý sự kiện tùy chỉnh cho các tiện ích phát ra sự kiện, bạn phải cài đặt trình giả lập Chức năng đám mây và Eventarc.

Thời gian chạy Hàm đám mây đặt biến môi trường EVENTARC_EMULATOR thành localhost:9299 trong quy trình hiện tại nếu trình giả lập Eventarc đang chạy. SDK quản trị Firebase tự động kết nối với trình mô phỏng Eventarc khi biến môi trường EVENTARC_EMULATOR được đặt. Bạn có thể sửa đổi cổng mặc định như đã thảo luận trong phần Định cấu hình Bộ giả lập Cục bộ .

Khi các biến môi trường được định cấu hình đúng cách, SDK quản trị Firebase sẽ tự động gửi các sự kiện đến trình giả lập Eventarc. Đổi lại, trình giả lập Eventarc gọi lại trình giả lập Chức năng đám mây để kích hoạt mọi trình xử lý đã đăng ký.

Bạn có thể kiểm tra Nhật ký hàm trong Giao diện người dùng Bộ giả lập để biết chi tiết về việc thực thi trình xử lý.

Tương tác với các dịch vụ khác

Bộ trình giả lập bao gồm nhiều trình giả lập, cho phép thử nghiệm các tương tác giữa các sản phẩm.

Cửa hàng lửa trên đám mây

Nếu bạn có các chức năng sử dụng SDK quản trị Firebase để ghi vào Cloud Firestore, thì các thao tác ghi này sẽ được gửi đến trình giả lập Cloud Firestore nếu nó đang chạy. Nếu các chức năng khác được kích hoạt bởi các thao tác ghi đó, chúng sẽ được chạy trong trình giả lập Chức năng đám mây.

Lưu trữ đám mây

Nếu bạn có các chức năng sử dụng SDK quản trị Firebase (phiên bản 9.7.0 trở lên) để ghi vào Cloud Storage, thì các thao tác ghi này sẽ được gửi đến trình giả lập Cloud Storage nếu nó đang chạy. Nếu các chức năng khác được kích hoạt bởi các thao tác ghi đó, chúng sẽ được chạy trong trình giả lập Chức năng đám mây.

Xác thực căn cứ hỏa lực

Nếu bạn có các chức năng sử dụng SDK quản trị Firebase (phiên bản 9.3.0 trở lên) để ghi vào Xác thực Firebase, thì các thao tác ghi này sẽ được gửi đến trình giả lập Auth nếu nó đang chạy. Nếu các chức năng khác được kích hoạt bởi các thao tác ghi đó, chúng sẽ được chạy trong trình giả lập Chức năng đám mây.

Lưu trữ căn cứ hỏa lực

Nếu bạn đang sử dụng Chức năng đám mây để tạo nội dung động cho Dịch vụ lưu trữ Firebase , firebase emulators:start sử dụng các chức năng HTTP cục bộ của bạn làm proxy để lưu trữ.

ghi nhật ký

Trình giả lập truyền các bản ghi từ các chức năng của bạn đến cửa sổ đầu cuối nơi chúng chạy. Nó hiển thị tất cả đầu ra từ các câu lệnh console.log() , console.info() , console.error()console.warn() bên trong hàm của bạn.

Bước tiếp theo

Để biết ví dụ đầy đủ về cách sử dụng bộ trình giả lập Firebase, hãy xem mẫu khởi động nhanh thử nghiệm .