Cài đặt, định cấu hình và tích hợp Bộ công cụ mô phỏng cục bộ

Bộ công cụ mô phỏng cục bộ của Firebase có thể được cài đặt và định cấu hình cho các môi trường nguyên mẫu và thử nghiệm, mọi thứ từ các phiên tạo mẫu một lần cho đến quy trình tích hợp liên tục trên quy mô sản xuất.

Cài đặt Bộ mô phỏng cục bộ

Trước khi cài đặt Bộ mô phỏng, bạn cần có:

  • Node.js phiên bản 16.0 trở lên.
  • JDK Java phiên bản 11 trở lên.

Cách cài đặt Bộ mô phỏng:

  1. Cài đặt Firebase CLI. Nếu bạn chưa cài đặt Firebase CLI, cài đặt ngay. Bạn cần có CLI phiên bản 8.14.0 trở lên để sử dụng Bộ mô phỏng. Bạn có thể hãy kiểm tra xem bạn đã cài đặt phiên bản nào bằng lệnh sau:
    firebase --version
  2. Khởi chạy thư mục đang làm việc hiện tại (nếu bạn chưa thực hiện) dưới dạng dự án Firebase, hãy làm theo các lời nhắc trên màn hình để chỉ định sản phẩm để sử dụng:
    firebase init
  3. Thiết lập Bộ mô phỏng. Lệnh này sẽ khởi động một trình hướng dẫn cấu hình cho phép bạn chọn trình mô phỏng mà bạn quan tâm, tải trình mô phỏng tương ứng xuống tệp nhị phân và đặt cổng trình mô phỏng nếu chế độ mặc định không phù hợp.
    firebase init emulators

Sau khi cài đặt trình mô phỏng, không có lượt kiểm tra cập nhật nào được thực hiện và không có tự động tải xuống sẽ xảy ra cho đến khi bạn cập nhật phiên bản Firebase CLI.

Định cấu hình Bộ mô phỏng

Bạn có thể tuỳ ý định cấu hình trình mô phỏng cổng mạng và đường dẫn đến trang Bảo mật Định nghĩa các quy tắc trong tệp firebase.json:

  • Thay đổi cổng trình mô phỏng bằng cách chạy firebase init emulators hoặc bằng cách chỉnh sửa firebase.json theo cách thủ công.
  • Thay đổi đường dẫn đến định nghĩa về Quy tắc bảo mật bằng cách chỉnh sửa firebase.json theo cách thủ công.

Nếu bạn không định cấu hình các chế độ cài đặt này, thì trình mô phỏng sẽ lắng nghe trên các cổng mặc định và Cloud Firestore, Realtime DatabaseCloud Storage for Firebase các trình mô phỏng sẽ chạy cùng với chế độ bảo mật dữ liệu mở.

Lệnh Mô tả
trình mô phỏng init Khởi động trình hướng dẫn khởi động trình mô phỏng. Xác định trình mô phỏng cần cài đặt và tuỳ ý chỉ định chế độ cài đặt cổng trình mô phỏng. init emulators không thể phá huỷ; Việc chấp nhận giá trị mặc định sẽ giữ nguyên cấu hình hiện tại của trình mô phỏng.

Cấu hình cổng

Mỗi trình mô phỏng liên kết với một cổng khác trên máy của bạn bằng một cổng mặc định ưu tiên giá trị.

Trình mô phỏng Cổng mặc định
Authentication 9099
Emulator Suite UI 4000
Cloud Functions 5001
Eventarc 9299
Realtime Database 9000
Cloud Firestore 8080
Cloud Storage for Firebase 9199
Firebase Hosting 5000
Pub/Sub 8085

Cấu hình mã dự án

Tuỳ thuộc vào cách gọi trình mô phỏng, bạn có thể chạy nhiều phiên bản của một trình mô phỏng sử dụng mã dự án Firebase khác nhau hoặc nhiều phiên bản của trình mô phỏng cho một mã dự án nhất định. Trong những trường hợp như vậy, các thực thể trình mô phỏng đang chạy trong một môi trường riêng biệt.

Nhìn chung, bạn nên đặt một mã dự án cho tất cả trình mô phỏng nên Emulator Suite UI, các trình mô phỏng sản phẩm khác nhau và tất cả các phiên bản đang chạy của một trình mô phỏng cụ thể có thể giao tiếp chính xác trong tất cả trường hợp.

Local Emulator Suite đưa ra cảnh báo khi phát hiện có nhiều mã dự án trong môi trường, mặc dù bạn có thể ghi đè hành vi này bằng cách đặt Khoá singleProjectMode để false trong firebase.json của bạn.

Bạn có thể kiểm tra(các) bản khai báo mã dự án để tìm thông tin không khớp trong:

  • Dự án mặc định trong dòng lệnh. Theo mặc định, mã dự án sẽ được lấy khi khởi động từ dự án được chọn bằng firebase init hoặc firebase use. Cách xem danh sách dự án (cũng như dự án được chọn) sử dụng firebase projects:list.
  • Kiểm thử đơn vị quy tắc. Mã dự án thường được chỉ định trong các lệnh gọi đến Quy tắc Các phương thức thư viện Kiểm thử đơn vị initializeTestEnvironment hoặc initializeTestApp.
  • Cờ --project của dòng lệnh. Truyền CLI Firebase Cờ --project ghi đè dự án mặc định. Bạn cần đảm bảo giá trị cờ khớp với mã dự án trong các bài kiểm thử đơn vị và khởi chạy ứng dụng.

Hãy kiểm tra cấu hình mã dự án dành riêng cho từng nền tảng mà bạn đã đặt trong khi định cấu hình nền tảng Apple của bạn, Dự án Androidweb.

Cấu hình Quy tắc bảo mật

Trình mô phỏng sẽ lấy cấu hình Quy tắc bảo mật từ database, Khoá cấu hình firestorestorage trong firebase.json.

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore": {
    "rules": "firestore.rules"
  },
  "storage": {
    "rules": "storage.rules"
  }

  // ...

  // Optional emulator configuration. Default
  // values are used if absent.
  "emulators": {
    "singleProjectMode": false, // do not warn on detection of multiple project IDs
    "firestore": {
      "port": "8080"
    },
    "ui": {
      "enabled": true,      // Default is `true`
      "port": 4000          // If unspecified, see CLI log for selected port
    },
    "auth": {
      "port": "9099"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

Chỉ định các tuỳ chọn Java

Trình mô phỏng Realtime Database, trình mô phỏng Cloud Firestore và một phần của Trình mô phỏng Cloud Storage for Firebase dựa trên Java (có thể tuỳ chỉnh được) với cờ JVM thông qua biến môi trường JAVA_TOOL_OPTIONS.

Ví dụ: nếu gặp lỗi liên quan đến dung lượng vùng nhớ khối xếp Java, bạn có thể tăng kích thước vùng nhớ khối xếp Java tối đa là 4GB:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

Bạn có thể chỉ định nhiều cờ trong dấu ngoặc kép và phân tách bằng dấu cách, chẳng hạn như JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g". Cờ chỉ ảnh hưởng đến mã dựa trên Java của các trình mô phỏng và không ảnh hưởng đến các phần khác của Giao diện dòng lệnh (CLI) Firebase, chẳng hạn như Emulator Suite UI.

Khởi động trình mô phỏng

Bạn có thể khởi động trình mô phỏng để chạy cho đến khi bị chấm dứt theo cách thủ công hoặc để chạy cho thời lượng của một tập lệnh kiểm thử được chỉ định rồi tự động tắt.

Lệnh Mô tả
emulators:start Khởi động trình mô phỏng cho các sản phẩm Firebase được định cấu hình trong firebase.json. Các quy trình của trình mô phỏng sẽ tiếp tục chạy cho đến khi kết thúc một cách rõ ràng. Gọi điện emulators:start sẽ tải trình mô phỏng xuống ~/.cache/firebase/emulators/ nếu chúng chưa được cài đặt.
Cờ Mô tả
--only Không bắt buộc. Giới hạn trình mô phỏng nào khởi động. Cung cấp danh sách tên trình mô phỏng được phân tách bằng dấu phẩy, trong đó nêu rõ một hoặc thêm 'auth', 'database', 'firestore', 'functions', 'hosting' hoặc 'pubsub'.
--inspect-functions debug_port Không bắt buộc. Sử dụng với Trình mô phỏng Cloud Functions để bật tính năng gỡ lỗi điểm ngắt của các hàm tại hàm được chỉ định cổng (hoặc cổng mặc định 9229 nếu đối số bị bỏ qua). Lưu ý rằng khi cờ này được được cung cấp, trình mô phỏng Cloud Functions sẽ chuyển sang chế độ thực thi tuần tự đặc biệt, trong đó các hàm được thực thi trong một quy trình duy nhất, theo tuần tự (FIFO); điều này giúp đơn giản hoá việc gỡ lỗi hàm, mặc dù hành vi khác với việc thực thi các hàm đa quy trình, song song trên đám mây.
--export-on-exit= Không bắt buộc. Sử dụng với Authentication, Cloud Firestore, Realtime Database hoặc Trình mô phỏng Cloud Storage for Firebase. Hướng dẫn(các) trình mô phỏng xuất dữ liệu sang một thư mục khi việc tắt xảy ra, như mô tả cho emulators:export . Có thể chỉ định thư mục xuất bằng cờ này: firebase emulators:start --export-on-exit=./saved-data. Nếu bạn sử dụng --import, đường dẫn xuất sẽ được đặt theo mặc định; ví dụ: firebase emulators:start --import=./data-path --export-on-exit. Cuối cùng, nếu muốn, hãy chuyển các đường dẫn thư mục khác nhau đến --import và Cờ --export-on-exit.
--import=import_directory Không bắt buộc. Sử dụng với Authentication, Cloud Firestore, Realtime Database hoặc Trình mô phỏng Cloud Storage for Firebase. Nhập dữ liệu được lưu bằng Tuỳ chọn khởi động --export-on-exit hoặc emulators:export lệnh cho một Authentication, Cloud Firestore, Realtime Database đang chạy hoặc Phiên bản trình mô phỏng Cloud Storage for Firebase. Mọi dữ liệu hiện có trong bộ nhớ của trình mô phỏng sẽ bị thông báo trước.
emulators:exec scriptpath Chạy tập lệnh tại scriptpath sau khi khởi động trình mô phỏng cho các sản phẩm Firebase đã định cấu hình trong firebase.json. Các quy trình của trình mô phỏng sẽ tự động dừng khi đã chạy xong tập lệnh.
Cờ Mô tả
--only Không bắt buộc. Giới hạn trình mô phỏng nào khởi động. Cung cấp danh sách tên trình mô phỏng được phân tách bằng dấu phẩy, trong đó nêu rõ một hoặc nhiều hơn là 'firestore', 'database', 'functions', 'hosting' hoặc 'pubsub'.
--inspect-functions debug_port Không bắt buộc. Sử dụng với Trình mô phỏng Cloud Functions để bật tính năng gỡ lỗi điểm ngắt của các hàm tại cổng được chỉ định (hoặc cổng mặc định 9229 nếu đối số bị bỏ qua). Lưu ý rằng khi cờ được cung cấp, trình mô phỏng Cloud Functions sẽ chuyển sang một phiên bản chế độ thực thi trong đó các hàm được thực thi trong một quy trình duy nhất, theo tuần tự (FIFO); điều này giúp đơn giản hoá việc gỡ lỗi hàm, mặc dù hành vi khác với việc thực thi các hàm đa quy trình, song song trên đám mây.
--export-on-exit= Không bắt buộc. Sử dụng với Authentication, Cloud Firestore, Realtime Database hoặc Trình mô phỏng Cloud Storage for Firebase. Hướng dẫn(các) trình mô phỏng xuất dữ liệu sang một thư mục khi việc tắt xảy ra, như mô tả cho emulators:export . Có thể chỉ định thư mục xuất bằng cờ này: firebase emulators:start --export-on-exit=./saved-data. Nếu bạn sử dụng --import, đường dẫn xuất sẽ được đặt theo mặc định; ví dụ: firebase emulators:start --import=./data-path --export-on-exit. Cuối cùng, nếu muốn, hãy chuyển các đường dẫn thư mục khác nhau đến --import và Cờ --export-on-exit.
--import=import_directory Không bắt buộc. Sử dụng với Authentication, Cloud Firestore, Realtime Database hoặc Trình mô phỏng Cloud Storage for Firebase. Nhập dữ liệu được lưu bằng Tuỳ chọn khởi động --export-on-exit hoặc emulators:export lệnh cho một Authentication, Cloud Firestore, Realtime Database đang chạy hoặc Phiên bản trình mô phỏng Cloud Storage for Firebase. Mọi dữ liệu hiện có trong bộ nhớ của trình mô phỏng sẽ bị ghi đè.
--ui Không bắt buộc. Chạy giao diện người dùng của Trình mô phỏng trong quá trình thực thi.

Phương thức firebase emulators:exec thường phù hợp hơn cho quy trình tích hợp liên tục.

Xuất và nhập dữ liệu của trình mô phỏng

Bạn có thể xuất dữ liệu từ Authentication, Cloud Firestore, Realtime Database và Trình mô phỏng Cloud Storage for Firebase để dùng làm dữ liệu cơ sở phổ biến, dễ chia sẻ thiết lập. Bạn có thể nhập các tập dữ liệu này bằng cách sử dụng cờ --import, như được mô tả ở trên.

emulators:export export_directory

Trình mô phỏng Authentication, Cloud Firestore, Realtime Database hoặc Cloud Storage for Firebase. Xuất dữ liệu từ một Cloud Firestore, Realtime Database hoặc Cloud Storage for Firebase đang chạy thực thể của trình mô phỏng. export_directory đã chỉ định sẽ được tạo nếu có chưa tồn tại. Nếu thư mục được chỉ định tồn tại, bạn sẽ được nhắc xác nhận rằng dữ liệu xuất trước đó sẽ bị ghi đè. Bạn có thể bỏ qua câu lệnh này bằng cách sử dụng cờ --force. Thư mục xuất chứa tệp kê khai dữ liệu, firebase-export-metadata.json.

Bạn có thể hướng dẫn trình mô phỏng tự động xuất dữ liệu khi chúng tắt bằng cách sử dụng Cờ --export-on-exit được mô tả ở trên.

Tích hợp với hệ thống CI

Chạy hình ảnh Bộ mô phỏng trong vùng chứa

Cài đặt và định cấu hình Bộ mô phỏng với các vùng chứa trong một cách thiết lập CI thông thường rất đơn giản.

Có một vài vấn đề cần lưu ý:

  • Các tệp JAR được cài đặt và lưu vào bộ nhớ đệm tại ~/.cache/firebase/emulators/.

    • Bạn nên thêm đường dẫn này vào cấu hình bộ nhớ đệm CI để tránh tải xuống lặp lại.
  • Nếu không có tệp firebase.json trong kho lưu trữ, bạn phải thêm một tệp đối số dòng lệnh cho lệnh emulators:start hoặc emulators:exec để chỉ định trình mô phỏng nào sẽ được khởi động. Ví dụ:
    --only functions,firestore.

Tạo mã thông báo xác thực (Chỉ dành cho trình mô phỏng lưu trữ)

Nếu quy trình tích hợp liên tục của bạn dựa vào Firebase Hosting , thì bạn sẽ cần đăng nhập bằng mã thông báo để chạy firebase emulators:exec. Chiến lược phát hành đĩa đơn các trình mô phỏng khác không yêu cầu đăng nhập.

Để tạo mã thông báo, hãy chạy firebase login:ci trên môi trường cục bộ của bạn; bạn không nên thực hiện việc này từ hệ thống CI. Hãy làm theo hướng dẫn để xác thực. Bạn chỉ cần thực hiện bước này một lần cho mỗi dự án, vì mã thông báo sẽ có hiệu lực trên các bản dựng. Mã thông báo phải được coi là mật khẩu; hãy đảm bảo thông tin này được giữ bí mật.

Nếu môi trường CI cho phép bạn chỉ định các biến môi trường có thể dùng trong tập lệnh bản dựng, bạn chỉ cần tạo một biến môi trường có tên là FIREBASE_TOKEN, với giá trị là chuỗi mã truy cập. Giao diện dòng lệnh (CLI) của Firebase sẽ tự động chọn biến môi trường FIREBASE_TOKEN và trình mô phỏng sẽ khởi động đúng cách.

Khi không còn cách nào khác, bạn chỉ cần đưa mã thông báo đó vào tập lệnh bản dựng, nhưng đảm bảo rằng các bên không đáng tin cậy sẽ không có quyền truy cập. Đối với loại tệp được cố định giá trị trong mã này phương pháp tiếp cận này, bạn có thể thêm --token "YOUR_TOKEN_STRING_HERE" vào Lệnh firebase emulators:exec.

Sử dụng API REST của Trung tâm trình mô phỏng

Liệt kê các trình mô phỏng đang chạy

Để liệt kê các trình mô phỏng đang chạy, hãy gửi yêu cầu GET đến /emulators điểm cuối của Trung tâm trình mô phỏng.

curl localhost:4400/emulators

Kết quả sẽ là một đối tượng JSON liệt kê tất cả các trình mô phỏng đang chạy và cấu hình máy chủ/cổng, ví dụ:

{
  "hub":{
    "name": "hub",
    "host": "localhost",
    "port": 4400
  },
  "functions": {
    "name": "functions",
    "host": "localhost",
    "port": 5001
  }
  "firestore": {
    "name": "firestore",
    "host": "localhost",
    "port": 8080
  }
}

Bật / tắt trình kích hoạt chức năng trong nền

Trong một số trường hợp, bạn sẽ cần tạm thời vô hiệu hoá chức năng cục bộ và trình kích hoạt tiện ích. Ví dụ: bạn có thể muốn xoá tất cả dữ liệu trong Trình mô phỏng Cloud Firestore mà không kích hoạt bất kỳ hàm onDelete nào đang chạy trong trình mô phỏng Cloud Functions hoặc Extensions.

Để tạm thời tắt các điều kiện kích hoạt hàm cục bộ, hãy gửi yêu cầu PUT đến Điểm cuối /functions/disableBackgroundTriggers của Trung tâm trình mô phỏng.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

Kết quả sẽ là một đối tượng JSON chứa thông tin chi tiết về trạng thái hiện tại.

{
  "enabled": false
}

Để bật điều kiện kích hoạt hàm cục bộ sau khi tắt, hãy gửi PUT yêu cầu đến điểm cuối /functions/enableBackgroundTriggers của Trình mô phỏng Nội dung trung tâm.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

Kết quả sẽ là một đối tượng JSON chứa thông tin chi tiết về trạng thái hiện tại.

{
  "enabled": true
}

Tích hợp SDK trình mô phỏng

Các bảng trong phần này cho biết trình mô phỏng nào được ứng dụng hỗ trợ và SDK Quản trị. Tương lai có nghĩa là đã có kế hoạch hỗ trợ trình mô phỏng nhưng chưa hỗ trợ trình mô phỏng sẵn có.

Phạm vi cung cấp SDK ứng dụng

Android Nền tảng của Apple Web Giao diện người dùng Firebase
Android
Giao diện người dùng Firebase
iOS
Giao diện người dùng Firebase
Web
Realtime Database 19.4.0 7.2.0 8.0.0 6.4.0 Tương lai Không áp dụng
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 Tương lai Không áp dụng
Authentication 20.0.0 7.0.0 8.0.0 7.0.0 Tương lai 4.7.2
Cloud Storage for Firebase 20.0.0 8.0.0 8.4.0 7.0.0 11.0.0 Không áp dụng
Cloud Functions 19.1.0 7.2.0 8.0.0 Không áp dụng Không có Không có
Hosting Không có Không có Không có Không có Không có Không có
Extensions Không có Không có Không có Không có Không có Không áp dụng

Phạm vi cung cấp SDK dành cho quản trị viên

Nút Java Python Bắt đầu
Realtime Database 8.6.0 6.10.0 2.18.0 Tương lai
Cloud Firestore 8.0.0 6.10.0 3.0.0 1.0.0
Authentication 9.3.0 7.2.0 5.0.0 4.2.0
Cloud Storage for Firebase 9.8.0 Tương lai Tương lai Tương lai
Cloud Functions Không áp dụng Không có Không có Không có
Hosting Không có Không có Không có Không có
Extensions Không có Không có Không có Không áp dụng