Поддерживаемые среды
Firebase JavaScript SDK официально поддерживается в следующих средах:
Браузеры
| Продукт Firebase | Edge | Firefox | Chrome | Safari для iOS | Safari |
|---|---|---|---|---|---|
| Firebase AI Logic 1 | |||||
| Analytics | |||||
| App Check | |||||
| Authentication | |||||
| Cloud Firestore | (кроме постоянства) |
(кроме persistence для iOS < 10) |
|||
| Cloud Functions | |||||
| Cloud Messaging | (Edge 17 и более поздние версии, кроме мобильных) |
||||
| Cloud Storage | |||||
| Firebase установок | |||||
| Performance Monitoring | |||||
| Realtime Database | |||||
| Remote Config | |||||
| SQL Connect |
1 Firebase AI Logic ранее назывался Vertex AI in Firebase.
Другие среды
| Продукт Firebase | React Native; | Node.js (18+) | Расширения Chrome |
Кордова |
|---|---|---|---|---|
| Firebase AI Logic 1 | ||||
| App Check | (с помощью стороннего поставщика для подтверждения устройств) |
(с помощью стороннего поставщика) |
||
| Analytics | ||||
| Authentication | (см. Примечание) |
(см. Примечание) |
(см. Примечание) |
(см. Примечание) |
| Cloud Firestore | (кроме постоянства) |
(кроме постоянства) |
||
| Cloud Functions | ||||
| Cloud Messaging | ||||
| Cloud Storage | (кроме загрузок) |
|||
| Firebase установок | ||||
| Performance Monitoring | ||||
| Realtime Database | ||||
| Remote Config | ||||
| SQL Connect |
1 Firebase AI Logic ранее назывался Vertex AI in Firebase.
Полизаполнения
SDK Firebase JavaScript создан на основе новейших стандартов веб-платформы. Некоторые старые браузеры и среды JavaScript не поддерживают все функции, необходимые для Firebase. Если вам нужно поддерживать эти браузеры/среды, вам необходимо загрузить соответствующие полифилы.
Ниже перечислены наиболее распространенные полифилы.
Необходимые полифилы
| Среды | Полифилы |
|---|---|
| Safari 7, 8 и 9 | ES Stable |
| Узел < 10 | ES Stable |
Необязательные полифилы
| Среды | Полифилы | Продукты Firebase |
|---|---|---|
|
fetch |
|
|
fetch |
|
|
base-64 |
|
Рекомендуемые полифилы
| Полифилы | Лицензия |
|---|---|
| ES Стабильная | MIT |
| fetch – `cross-fetch` – лучше всего подходит для старых браузеров. | MIT |
| fetch – undici – лучше всего подходит для Node.js. | MIT |
| base-64 | MIT |
Настройка полифила для React Native и Expo
Если вы загружаете строку в кодировке Base64 для React Native и Expo, выполните следующие действия:
Установите 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 гарантирует, что ваши требования к поддержке браузеров всегда будут соблюдаться, даже если Firebase или ваш собственный код начнут использовать новые функции ES.
В документации по @babel/preset-env подробно описаны доступные параметры конфигурации для указания целевых сред (параметр targets) и добавления полифилов (параметр useBuiltIns).
Вариант 2. (Не рекомендуется) Добавьте полифилы вручную.
Вы можете добавить полифилы вручную, используя свои любимые библиотеки полифилов (например, core-js).
import 'core-js/stable'
import 'cross-fetch/polyfill';
core-js также предоставляет универсальный файл полифила, который можно напрямую включить в HTML-страницу.
Этот вариант может быть удобен для управления полифилами, если вы не используете Babel. Однако мы не рекомендуем использовать этот вариант для рабочих приложений, поскольку он может включать ненужные полифилы, которые увеличивают размер страницы и, следовательно, время загрузки страницы.