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

Firebase CLI bao gồm trình mô phỏng 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
  • Các hàm có thể gọi được
  • 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 hàm 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 mô phỏng Cloud Functions, trước tiên hãy cài đặt Firebase CLI:

npm install -g firebase-tools

Để sử dụng trình mô phỏng 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 các thử nghiệm chức năng của mình tương tác với API Google hoặc các API Firebase khác thông qua SDK quản trị Firebase , 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 Cloud Firestore và Cơ sở dữ liệu thời gian thực đã 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 cả API Firebase như Xác thực và FCM hoặc API Google 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 bảng điều khiển Google Cloud.
  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 xác thực mặc định của Google của bạn để 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 Firebase và API Google bằng SDK quản trị viên . Ví dụ: khi kiểm tra trình kích hoạt Xác thực, hàm đượ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 hàm 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ộ mô phỏng

Để chạy trình mô phỏng Cloud Functions, hãy sử dụng lệnh emulators:start :

firebase emulators:start

Lệnh emulators:start sẽ khởi động trình mô phỏng cho Cloud Functions, Cloud Firestore, Cơ sở dữ liệu thời gian thực và Firebase Hosting 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 khởi động một trình mô phỏng cụ thể, hãy sử dụng cờ --only :

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 mô phỏng khởi động, hãy sử dụng lệnh trình emulators:exec :

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

Thiết lập ứng dụng của bạn để giao tiếp với trình mô phỏng

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

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

Nếu nguyên mẫu và hoạt động thử nghiệm của bạn liên quan đến các hàm phụ trợ có thể gọi được , hãy định cấu hình tương tác với Hàm đám mây cho trình mô phỏng Firebase như thế này:

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://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);

Trang bị ứng dụng của bạn để mô phỏng các chức năng HTTPS

Mỗi hàm HTTPS trong mã của bạn sẽ được cung cấp từ trình mô phỏng cục bộ bằng định dạng URL sau:

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

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

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

Trang bị ứ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 được kích hoạt trong nền từ các nguồn sau:

  • Trình mô phỏng cơ sở dữ liệu thời gian thực
  • Trình giả lập Cloud Firestore
  • Trình mô phỏng 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ụ trợ bằng cách sử dụng Giao diện người dùng Bộ mô phỏng hoặc bằng cách kết nối ứng dụng hoặc mã kiểm tra của bạn với trình mô phỏng bằng SDK 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 mô phỏng Cloud Functions kết hợp với trình mô phỏng 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 mô phỏng Cloud Functions và Eventarc.

Thời gian chạy của Cloud Functions đặ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 mô phỏng 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ộ mô phỏng 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 mô phỏng Eventarc. Đổi lại, trình mô phỏng Eventarc thực hiện lệnh gọi trở lại trình mô phỏng 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ộ mô phỏng để biết chi tiết về cách thực thi trình xử lý.

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

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

Cửa hàng đá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ì những lần ghi này sẽ được gửi tới trình mô phỏng 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 những lần ghi đó, chúng sẽ được chạy trong trình mô phỏng 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ì những lần ghi này sẽ được gửi tới trình mô phỏng 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 những lần ghi đó, chúng sẽ được chạy trong trình mô phỏng Chức năng đám mây.

Xác thực Firebase

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ì những lần ghi này sẽ được gửi tới trình mô phỏng Auth nếu nó đang chạy. Nếu các chức năng khác được kích hoạt bởi những lần ghi đó, chúng sẽ được chạy trong trình mô phỏng 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ẽ 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 mô phỏng truyền nhật ký từ các hàm 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ừ console.log() , console.info() , console.error()console.warn() bên trong các hàm của bạn.

Bước tiếp theo

Để biết ví dụ đầy đủ về cách sử dụng bộ mô phỏng Firebase, hãy xem mẫu bắt đầu thử nghiệm nhanh .