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

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

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

Браузеры

Продукт Firebase Край Firefox Хром iOS-сафари Сафари
Firebase AI Логика 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 Реагировать нативно Node.js (18+) Хром
Расширения
Кордова
Firebase AI Логика 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 и Экспо
база-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. Однако мы не рекомендуем этот вариант «все в одном» для производственных приложений, поскольку он, скорее всего, будет включать ненужные полифилы, что увеличит вес страницы и, следовательно, время ее загрузки.