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