Các môi trường được hỗ trợ cho Firebase JavaScript SDK

Môi trường được hỗ trợ

SDK Firebase JavaScript được hỗ trợ chính thức trong các môi trường sau.

Trình duyệt

Sản phẩm Firebase Edge Firefox Chrome Safari trên iOS Safari
Firebase AI Logic 1
Analytics
App Check
Authentication
Cloud Firestore
(ngoại trừ tính liên tục
)

(ngoại trừ
persistence
nếu iOS < 10)
Cloud Functions
Firebase lượt cài đặt
Cloud Messaging
(Edge 17 trở lên, ngoại trừ thiết bị di động)
Cloud Storage
Data Connect
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic trước đây có tên là "Vertex AI in Firebase".

Các môi trường khác

Sản phẩm Firebase React Native Node.js (Từ 18 tuổi trở lên) Tiện ích
của Chrome
Cordova
Firebase AI Logic 1
App Check
(sử dụng trình cung cấp tuỳ chỉnh để thực hiện chứng thực thiết bị gốc)

(sử dụng nhà cung cấp tuỳ chỉnh)
Analytics
Authentication
(xem Lưu ý)

(xem Lưu ý)

(xem Lưu ý)

(xem Lưu ý)
Cloud Firestore
(ngoại trừ tính liên tục
)

(ngoại trừ tính liên tục
)
Cloud Functions
Data Connect
Firebase lượt cài đặt
Cloud Messaging
Cloud Storage
(ngoại trừ
nội dung tải lên)
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic trước đây có tên là "Vertex AI in Firebase".

Polyfill

SDK Firebase JavaScript được xây dựng dựa trên các tiêu chuẩn mới nhất của nền tảng web. Một số trình duyệt và môi trường JavaScript cũ không hỗ trợ tất cả các tính năng mà Firebase yêu cầu. Nếu phải hỗ trợ các trình duyệt/môi trường này, thì bạn cần tải các polyfill cho phù hợp.

Các phần dưới đây xác định hầu hết các polyfill mà bạn có thể cần.

Polyfill bắt buộc

Môi trường Polyfill
Safari 7, 8 và 9 ES Stable
Nút < 10 ES Stable

Polyfill không bắt buộc

Môi trường Polyfill Các sản phẩm của Firebase
  • Safari < 10.1
  • iOS < 10.3
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Performance Monitoring
  • Node < 18
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Cloud Storage
  • React Native và Expo
base-64
  • Cloud Storage

Polyfill đề xuất

Polyfill Giấy phép
ES Ổn định MIT
fetch – "cross-fetch" – phù hợp nhất với các trình duyệt cũ MIT
tìm nạp – "undici" – phù hợp nhất cho Node.js MIT
base-64 MIT

Thiết lập Polyfill bắt buộc cho React Native và Expo

Đối với React Native và Expo, nếu đang tải một chuỗi được mã hoá base-64 lên, bạn cần làm như sau:

Cài đặt base-64 từ npm:

npm install base-64

Nhập decode từ base-64 và đính kèm vào phạm vi toàn cục dưới dạng atob để Cloud Storage có thể truy cập vào decode.

import { decode } from 'base-64';

if(typeof atob === 'undefined') {
  global.atob = decode;
}

Thêm polyfill vào ứng dụng

Lựa chọn 1: (Nên dùng) Sử dụng trình kết hợp được tích hợp với Babel

Nếu bạn đang sử dụng một trình kết hợp, hãy tích hợp với Babel@babel/preset-env để nhận các polyfill.

Sử dụng hướng dẫn thiết lập có tính tương tác của Babel để tìm hiểu cách tích hợp Babel với trình đóng gói của bạn.

Với Babel, bạn không cần lo lắng về các polyfill chính xác cần đưa vào. Thay vào đó, bạn chỉ định các môi trường trình duyệt tối thiểu mà bạn cần hỗ trợ. Sau đó, Babel sẽ thêm các polyfill cần thiết cho bạn. Babel đảm bảo rằng các yêu cầu của bạn về khả năng hỗ trợ trình duyệt luôn được đáp ứng, ngay cả khi Firebase hoặc mã của riêng bạn bắt đầu sử dụng các tính năng ES mới.

@babel/preset-env có thông tin chi tiết về các lựa chọn cấu hình có sẵn để chỉ định mục tiêu môi trường (lựa chọn targets) và thêm polyfill (lựa chọn useBuiltIns).

Cách 2: (Không nên dùng) Thêm polyfill theo cách thủ công

Bạn có thể thêm polyfill theo cách thủ công bằng cách sử dụng các thư viện polyfill yêu thích (ví dụ: core-js).

import 'core-js/stable'
import 'cross-fetch/polyfill';

core-js cũng cung cấp một tệp polyfill tất cả trong một mà bạn có thể trực tiếp đưa vào trang HTML.

Đây có thể là một cách thuận tiện để quản lý polyfill nếu bạn không sử dụng Babel. Tuy nhiên, bạn không nên dùng lựa chọn tất cả trong một này cho các ứng dụng phát hành công khai vì lựa chọn này có thể bao gồm các polyfill không cần thiết, làm tăng trọng lượng trang và do đó làm tăng thời gian tải trang.