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

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

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

Браузеры

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

(кроме
упорство
если 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+) Хром
Расширения
Кордова
Firebase AI Logic 1
App Check
(использование собственного поставщика для выполнения собственной аттестации устройства)

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

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

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

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

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

1 Firebase AI Logic ранее назывался « 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 Массачусетский технологический институт

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

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

Установить 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. Однако мы не рекомендуем этот универсальный вариант для производственных приложений, поскольку он, скорее всего, будет включать ненужные полифилы, что увеличит вес страницы и, следовательно, время её загрузки.