Firebase JavaScript SDK 支援的環境

支援的環境

Firebase JavaScript SDK 正式支援下列環境。

瀏覽器

Firebase 產品 Edge Firefox Chrome iOS Safari Safari
Firebase AI Logic 1
Analytics
App Check
Authentication
Cloud Firestore
(except
persistence)

(iOS 10 以下版本除外,這類版本會保留狀態)

Cloud Functions
Firebase 安裝次數
Cloud Messaging
(Edge 17 以上版本,行動裝置除外)
Cloud Storage
Data Connect
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic 以前稱為「Vertex AI in Firebase

其他環境

Firebase 產品 React Native Node.js (18 以上版本) Chrome
擴充功能
Cordova
Firebase AI Logic 1
App Check
(使用自訂供應商執行原生裝置認證)

(使用自訂供應商)
Analytics
Authentication
(請參閱注意事項)

(請參閱注意事項)

(請參閱注意事項)

(請參閱注意事項)
Cloud Firestore
(except
persistence)

(except
persistence)
Cloud Functions
Data Connect
Firebase 安裝次數
Cloud Messaging
Cloud Storage
(上傳項目除外)
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic 以前稱為「Vertex AI in Firebase

Polyfill

Firebase JavaScript SDK 是以最新的網頁平台標準建構而成,部分舊版瀏覽器和 JavaScript 環境不支援 Firebase 所需的所有功能。如果必須支援這些瀏覽器/環境,則需要相應載入 Polyfill。

以下各節會列出您可能需要的大部分 Polyfill。

必要 Polyfill

環境 Polyfills
Safari 7、8 和 9 ES 穩定版
節點 < 10 ES 穩定版

選用 Polyfill

環境 Polyfills 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 和 Expo
base-64
  • Cloud Storage

建議的 Polyfill

Polyfills 授權
ES 穩定版 麻省理工學院
fetch - `cross-fetch` - 最適合舊版瀏覽器 麻省理工學院
fetch - `undici` - 最適合 Node.js 麻省理工學院
base-64 麻省理工學院

React Native 和 Expo 的必要 Polyfill 設定

如果您使用 React Native 和 Expo 上傳 Base64 編碼字串,請按照下列步驟操作:

從 npm 安裝 base-64

npm install base-64

base-64 匯入 decode,並以 atob 形式附加至全域範圍,讓 Cloud Storage 可以存取。

import { decode } from 'base-64';

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

在應用程式中加入 Polyfill

選項 1(建議) 使用與 Babel 整合的打包工具

如果您使用 Bundler,請整合 Babel@babel/preset-env,取得 Polyfill。

請參閱 Babel 的互動式設定指南,瞭解如何將 Babel 與 Bundler 整合。

使用 Babel 時,您不必擔心要加入哪些確切的 Polyfill。而是指定需要支援的最低瀏覽器環境。Babel 接著會為您新增必要的 Polyfill。即使 Firebase 或您自己的程式碼開始使用新的 ES 功能,Babel 也能確保一律符合瀏覽器支援需求。

@babel/preset-env 提供了詳細資訊,說明如何指定環境目標 (選項 targets) 及新增 Polyfill (選項 useBuiltIns)。

選項 2(不建議) 手動新增 Polyfill

您可以使用偏好的 Polyfill 程式庫 (例如 core-js),手動新增 Polyfill。

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

core-js 也提供一應俱全的 Polyfill 檔案,可直接納入 HTML 網頁。

如果您未使用 Babel,這個選項可做為管理 Polyfill 的便利方式。不過,我們不建議在正式版應用程式中使用這個多合一選項,因為這可能會納入不必要的 Polyfill,導致網頁權重增加,進而延長網頁載入時間。