С помощью Firebase CLI вы можете развернуть свои веб-приложения Next.js в Firebase и использовать Firebase Hosting для их обслуживания.
Предоставлять статический контент
После инициализации Firebase вы можете предоставлять статический контент с помощью стандартной команды развертывания:
firebase deploy
Если ваше приложение включает динамическую логику на стороне сервера, CLI развернет эту логику в Cloud Functions for Firebase . Вы можете просмотреть развернутое приложение на его рабочем сайте.
Предварительная отрисовка динамического контента
Интерфейс командной строки Firebase отслеживает использование функций getStaticProps и getStaticPaths .
Дополнительно: интеграция с Firebase JS SDK.
При включении методов Firebase JS SDK как в серверные, так и в клиентские пакеты, следует предотвращать ошибки во время выполнения, проверяя isSupported() перед использованием продукта. Не все продукты поддерживаются во всех средах .
Дополнительно: интеграция с Firebase Admin SDK.
Пакеты Admin SDK не будут работать, если включены в сборку для браузера; ссылайтесь на них только внутри функций getStaticProps и getStaticPaths .
Предоставлять полностью динамический контент (SSR)
Интерфейс командной строки Firebase (CLI) обнаружит использование функции getServerSideProps . В таких случаях CLI развернет функции в Cloud Functions for Firebase мог запускать динамический серверный код. Информацию об этих функциях, например, об их домене и конфигурации среды выполнения, можно просмотреть в консоли Firebase .
Настройка поведения Hosting с помощью next.config.js
Оптимизация изображений
Поддерживается использование оптимизации изображений Next.js , но это приведет к созданию функции (в Cloud Functions for Firebase ), даже если вы не используете SSR.
Перенаправления, перезапись и заголовки
Интерфейс командной строки Firebase учитывает перенаправления , перезапись и заголовки в next.config.js , преобразуя их в соответствующие конфигурации Firebase Hosting во время развертывания. Если перенаправление, перезапись или заголовок Next.js не могут быть преобразованы в эквивалентный заголовок Firebase Hosting , он использует резервный вариант и создает функцию — даже если вы не используете оптимизацию изображений или SSR.
Дополнительно: интеграция с Firebase Authentication
Инструменты развертывания Firebase, поддерживающие веб-фреймворки, автоматически синхронизируют состояние клиента и сервера с помощью файлов cookie. Для доступа к контексту аутентификации в режиме SSR предусмотрены некоторые методы:
- Объект Express
res.localsможет дополнительно содержать аутентифицированный экземпляр приложения Firebase (firebaseApp) и текущего вошедшего в систему пользователя (currentUser). Доступ к ним можно получить вgetServerSideProps. - Аутентифицированное имя приложения Firebase указывается в запросе маршрута (
__firebaseAppName). Это позволяет выполнять ручную интеграцию в контексте:
// get the authenticated Firebase App
const firebaseApp = getApp(useRouter().query.__firebaseAppName);