Obsługiwane środowiska pakietu SDK Firebase JavaScript

Obsługiwane środowiska

Pakiet Firebase JavaScript SDK jest oficjalnie obsługiwany w tych środowiskach:

Przeglądarki

Usługa Firebase Edge Firefox Chrome iOS Safari Safari
Firebase AI Logic 1
Analytics
App Check
Authentication
Cloud Firestore
(except
persistence)

(z wyjątkiem
trwałości
w przypadku iOS < 10)
Cloud Functions
Firebase instalacje
Cloud Messaging
(Edge 17 lub nowszy, z wyjątkiem urządzeń mobilnych)
Cloud Storage
Data Connect
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic wcześniej nosiło nazwę „Vertex AI in Firebase

Inne środowiska

Usługa Firebase React Native Node.js (18+) Chrome
Extensions
Cordova
Firebase AI Logic 1
App Check
(przy użyciu niestandardowego dostawcy do atestowania urządzenia natywnego)

(przy użyciu dostawcy niestandardowego)
Analytics
Authentication
(patrz Uwaga)

(patrz Uwaga)

(patrz Uwaga)

(patrz Uwaga)
Cloud Firestore
(except
persistence)

(except
persistence)
Cloud Functions
Data Connect
Firebase instalacje
Cloud Messaging
Cloud Storage
(z wyjątkiem
przesyłania)
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic wcześniej nosiło nazwę „Vertex AI in Firebase

Kody polyfill

Pakiet SDK Firebase JavaScript jest oparty na najnowszych standardach platformy internetowej. Niektóre starsze przeglądarki i środowiska JavaScript nie obsługują wszystkich funkcji wymaganych przez Firebase. Jeśli musisz obsługiwać te przeglądarki lub środowiska, musisz odpowiednio wczytać polyfille.

W sekcjach poniżej znajdziesz większość polyfilli, których możesz potrzebować.

Wymagane polyfille

Środowiska Polyfill
Safari 7, 8 i 9 ES Stable
Węzeł < 10 ES Stable

Opcjonalne polyfille

Środowiska Polyfill Usługi Firebase
  • Safari w wersji starszej niż 10.1
  • iOS < 10.3
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Performance Monitoring
  • Węzeł < 18
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Cloud Storage
  • React Native i Expo
base-64
  • Cloud Storage

Sugerowane polyfille

Polyfill Licencja
ES Stabilna MIT
fetch – `cross-fetch` – najlepsza opcja w przypadku starszych przeglądarek MIT
fetch – `undici` – najlepsza opcja w przypadku Node.js MIT
base-64 MIT

Wymagana konfiguracja Polyfill w przypadku React Native i Expo

Jeśli w przypadku React Native i Expo przesyłasz ciąg tekstowy zakodowany w formacie Base64, musisz wykonać te czynności:

Zainstaluj base-64 z npm:

npm install base-64

Zaimportuj decodebase-64 i dołącz go do zakresu globalnego jako atob, aby Cloud Storage mógł uzyskać do niego dostęp.

import { decode } from 'base-64';

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

Dodawanie w aplikacji funkcji polyfill

Opcja 1: (zalecana) użyj narzędzia do łączenia plików zintegrowanego z Babel

Jeśli używasz narzędzia do łączenia modułów, zintegruj je z Babel i @babel/preset-env, aby uzyskać polyfille.

Skorzystaj z interaktywnego przewodnika po konfiguracji Babel, aby dowiedzieć się, jak zintegrować Babel z narzędziem do łączenia modułów.

Babel nie wymaga, abyś martwił się o dokładne polyfille, które należy uwzględnić. Zamiast tego określasz minimalne środowiska przeglądarki, które chcesz obsługiwać. Babel doda wtedy niezbędne polyfille. Babel dba o to, aby wymagania dotyczące obsługi przeglądarek były zawsze spełnione, nawet jeśli Firebase lub Twój kod zacznie korzystać z nowych funkcji ES.

@babel/preset-env zawiera szczegółowe informacje o dostępnych opcjach konfiguracji, które umożliwiają określanie docelowych środowisk (opcja targets) i dodawanie polyfilli (opcja useBuiltIns).

Opcja 2: (niezalecana) ręczne dodawanie polyfilli

Możesz ręcznie dodać polyfille, korzystając z ulubionych bibliotek polyfilli (np. core-js).

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

core-js udostępnia też wszechstronny plik polyfill, który możesz bezpośrednio umieścić na stronie HTML.

Jeśli nie używasz Babel, ta opcja może być wygodnym sposobem zarządzania polyfillami. Nie zalecamy jednak tej opcji „wszystko w jednym” w przypadku aplikacji produkcyjnych, ponieważ prawdopodobnie będzie ona zawierać niepotrzebne polyfille, co zwiększy rozmiar strony, a tym samym czas jej wczytywania.