Поддерживаемые среды для Firebase JavaScript SDK

Поддерживаемые среды

Firebase JavaScript SDK официально поддерживается в следующих средах.

Браузеры

Продукт Firebase Край Firefox Хром iOS Сафари Сафари
App Check
Analytics
Authentication
Cloud Firestore
(кроме
упорство)

(кроме
упорство
если iOS < 10)
Cloud Functions
Установки Firebase
Cloud Messaging
(Edge 17+, кроме мобильных)
Cloud Storage
Performance Monitoring
Realtime Database
Remote Config
Vertex AI in Firebase

Другие среды

Продукт Firebase Реагировать нативный Node.js (18+) Хром
Расширения
Кордова
App Check
(использование специального поставщика для собственной аттестации устройств)

(с использованием специального поставщика )
Analytics
Authentication
(см. примечание )

(см. примечание )

(см. примечание )

(см. примечание )
Cloud Firestore
(кроме
упорство)

(кроме
упорство)
Cloud Functions
Установки Firebase
Cloud Messaging
Cloud Storage
(кроме
загружает)
Performance Monitoring
Realtime Database
Remote Config
Vertex AI in Firebase

Полифилы

Firebase JavaScript SDK создан на основе новейших стандартов веб-платформы. Некоторые старые браузеры и среды JavaScript не поддерживают все функции, необходимые Firebase. Если вам необходимо поддерживать эти браузеры/среды, вам необходимо загрузить полифилы соответствующим образом.

В разделах ниже описано большинство полифилов, которые могут вам понадобиться.

Обязательные полифилы

Окружающая среда Полифилы
Сафари 7, 8 и 9 ES Стабильный
Узел < 10 ES Стабильный

Дополнительные полифилы

Окружающая среда Полифилы Продукты Firebase
  • Сафари < 10.1
  • iOS < 10.3
принести
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Performance Monitoring
  • Узел < 18
принести
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Cloud Storage
  • React Native и Expo
база-64
  • Cloud Storage

Предлагаемые полифилы

Полифилы Лицензия
ES Стабильный Массачусетский технологический институт
fetch — `cross-fetch` – лучше всего подходит для старых браузеров Массачусетский технологический институт
fetch — `undici` — лучше всего подходит для Node.js Массачусетский технологический институт
база-64 Массачусетский технологический институт

Необходимая настройка Polyfill для React Native и Expo

Для React Native и Expo, если вы загружаете строку в кодировке Base64, вам необходимо сделать следующее:

Установите base-64 из npm:

npm install base-64

Импортируйте decode из base-64 и прикрепите его к глобальной области как atob , чтобы Cloud Storage мог получить к нему доступ.

import { decode } from 'base-64';

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

Добавьте полифилы в свое приложение

Вариант 1 : (рекомендуется) Использовать сборщик, интегрированный с Babel.

Если вы используете сборщик, интегрируйтесь с Babel и @babel/preset-env, чтобы получить полифилы.

Используйте интерактивное руководство по настройке Babel, чтобы узнать, как интегрировать Babel с вашим сборщиком.

С Babel вам не нужно беспокоиться о том, какие именно полифилы нужно включить. Вместо этого вы указываете минимальную среду браузера, которую вам необходимо поддерживать. Затем Babel добавит за вас необходимые полифилы. Babel гарантирует, что ваши требования к поддержке браузера всегда будут выполнены, даже если Firebase или ваш собственный код начнут использовать новые функции ES.

@babel/preset-env содержит подробную информацию о доступных параметрах конфигурации для указания целей среды (параметр targets ) и добавления полифилов (опция useBuiltIns ).

Вариант 2 : (не рекомендуется) Добавить полифилы вручную.

Вы можете добавлять полифилы вручную, используя свои любимые библиотеки полифилов (например, core-js ).

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

core-js также предоставляет универсальный файл полифилла , который вы можете напрямую включить в HTML-страницу.

Эта опция может быть удобным способом управления полифилами, если вы не используете Babel. Однако мы не рекомендуем этот вариант «все в одном» для рабочих приложений, поскольку он, скорее всего, будет включать ненужные полифилы, что увеличивает вес страницы и, следовательно, время ее загрузки.