Пустая страница после успешного развертывания Firebase

Мое приложение ReactJs отлично работает на моем локальном компьютере, когда я использую команду npm start. Однако, когда я пытаюсь развернуть свое приложение с помощью firebase init в Firebase, я вижу пустую страницу. Что я делаю не так?

Обновлять: мне пришлось отредактировать файл Firebase.json, чтобы удалить

"predeploy": ["npm --prefix \"$RESOURCE_DIR\" run lint"],

line, поскольку я получал связанные с этим ошибки.

Firebase.json:

{
  "database": {
    "rules": "database.rules.json"
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "source": "functions"
  },
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  },
  "storage": {
    "rules": "storage.rules"
  }
}

Выходные данные команды развертывания Firebase:

=== Deploying to 'socialmedia-5ec0a'...

i  deploying database, storage, firestore, functions, hosting
i  database: checking rules syntax...
+  database: rules syntax for database socialmedia-5ec0a is valid
i  storage: checking storage.rules for compilation errors...
+  storage: rules file storage.rules compiled successfully
i  firestore: checking firestore.rules for compilation errors...
+  firestore: rules file firestore.rules compiled successfully
i  functions: ensuring necessary APIs are enabled...
+  functions: all necessary APIs are enabled
i  storage: uploading rules storage.rules...
i  firestore: uploading rules firestore.rules...
i  functions: preparing functions directory for uploading...
i  hosting[socialmedia-5ec0a]: beginning deploy...
i  hosting[socialmedia-5ec0a]: found 5 files in public
+  hosting[socialmedia-5ec0a]: file upload complete
i  database: releasing rules...
+  database: rules for database socialmedia-5ec0a released successfully
+  storage: released rules storage.rules to firebase.storage/socialmedia-5ec0a.appspot.com
+  firestore: released rules firestore.rules to cloud.firestore
i  hosting[socialmedia-5ec0a]: finalizing version...
+  hosting[socialmedia-5ec0a]: version finalized
i  hosting[socialmedia-5ec0a]: releasing new version...
+  hosting[socialmedia-5ec0a]: release complete

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/socialmedia-5ec0a/overview
Hosting URL: https://socialmedia-5ec0a.firebaseapp.com

Выход Chrome F12:Пустая страница после успешного развертывания Firebase

Вы запускали npm run build?

nambk 19.12.2020 12:15

У меня была такая же проблема, но решено, изменив "hosting" на "public": "build", снова запустите npm run build, а затем firebase deploy

nambk 19.12.2020 18:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
24
2
16 488
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Взгляните на свойство public вашего package.json

"public": "public",

Он указывает на папку ресурсов, в которой хостинг firebase будет искать ваше приложение. Если папка ресурсов пуста, вам будет представлена ​​пустая страница.

Когда вы создаете свое приложение для реагирования, все файлы по умолчанию попадают в папку build, если вы не указали иное. Поэтому установите общедоступное свойство в папку сборки responsejs.

Ответ принят как подходящий

У меня была такая же проблема. http: // локальный: 3000 / хорошо обслуживал приложение, но когда я развернул его с помощью npm run build, а затем firebase deploy, я увидел пустую страницу.

Я не уверен, почему, но я изменил свойство public в файле firebase.json на build, и это сработало.

вот мой новый документ firebase.json.

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

Я использовал команду сборки npm run-script для создания файлов сборки.

Ajit Goel 06.09.2018 06:35

Какой смысл публиковать тот же ответ, что и я, через 8 часов после того, как я опубликовал свой ??

Upvote 06.09.2018 07:29

Этот параметр будет указывать общую папку на вашу папку сборки ... которая в данном случае является местом, где находятся созданные файлы :)

doublejosh 01.03.2020 00:55

Вам также необходимо убедиться, что у вас есть хотя бы эти элементы в сценариях package.json ... "scripts": { "start": "react-scripts start", "build": "react-scripts build", "predeploy": "npm run build", "deploy": "firebase build" }

doublejosh 01.03.2020 00:57

В моем случае мне нужно было иметь «public»: «build» и добавить массив «rewrites» в мой документ firebase.json.

Loren 24.03.2020 16:00

Спасибо за этот ответ. Когда вы запускаете «firebase init», он спрашивает: «Что вы хотите использовать в качестве общедоступного каталога?». Если вы здесь ответите «build», вместо того, чтобы принять значение по умолчанию «public», это приведет к тому же поведению. (Перед этим нужно выполнить команду "npm run build", чтобы убедиться, что она работает)

Moni 07.06.2021 17:07

Еще одна вещь, которую вы также можете проверить, не работает ли изменение файла firebase.json.

  1. в инструментах разработчика Chrome перейдите на Application->Clear Storage
  2. нажмите на clean site data
  3. затем refresh приложение.

В некоторых случаях это работает.

После того, как вы инициализировали приложение Firebase с помощью firebase init, у вас должен быть файл firebase.json в папке вашего проекта. Дело в том, что открытый ключ должен указывать на вашу папку сборки. Например, в приложении create-response-app папка сборки - строить/ после первого запуска npm запустить сборку. Тогда firebase.json должен выглядеть примерно так:

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

Открытые ключевые точки для построения. Затем попробуйте другое развертывание с firebase deploy.

Убедитесь, что свойство homepage не задано внутри package.json. У меня это было, потому что я сначала развертывал на страницах Github. Снял, перестроил, развернул и заработал.

Это было для меня решением. Наблюдая за инструментами разработчика, он продолжал пытаться получить статические файлы с URL-адреса на основе свойства домашней страницы. Удалил свойство и все заработало.

Nogg 12.05.2019 06:04

Это было решением и для меня. Поэтому я предпочитаю Firebase Github.

user4141198 02.08.2019 00:04

Если изменение свойства 'public' в firebase.json не работает, сначала выясните, в какой папке находится ваш файл index.html, убедитесь, что это index.html, который вы написали, потому что firebase может поместить фиктивный index.html в основной папке и переместите ваш index.html в папку «build», в ней также может быть другая папка с именем вашего приложения внутри папки «build». Затем вам нужно изменить свойство public в файле firebase.json на имя этой папки, например:

     {
      "hosting": {
        "public": "my-app",
        "ignore": [
          "firebase.json",
          "**/.*",
          "**/node_modules/**"
        ],
        "rewrites": [
          {
            "source": "**",
            "destination": "/index.html"
          }
        ]
      }
    }

100% рабочий пример.

Решенная ошибка пустой страницы в хостинге приложений React в Firebase.

Нашел решение в этом блог

Разместите свое веб-приложение на React за несколько минут.

Неправильная последовательность =>

firebase login

firbase init

firebase deploy

npm run build

Правильная последовательность =>

firebase login

firbase init

npm run build

firebase deploy

У меня была такая же проблема. Но после того, как папка сборки была указана на. . . Я все еще видел пустой хост. В этом случае вы можете скопировать папку сборки, содержащую код инициализации firebase, и вставить ее в общую папку. Убедитесь, что вы добавили свой <div id=root> </div> в раздел body, а затем снова npm run build. Также убедитесь, что ваш firebase.json указывает на сборку, как упоминалось в предыдущих сообщениях.

использовать сборку для сборки

{
  "hosting": {
    "build": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.

Donald Duck 27.11.2020 13:31
  • удалить папку .firebase
  • удалите папку сборки и создайте ее снова с помощью "npm run build"
  • Затем снова инициализируйте свое приложение с помощью "firebase init".
  • Что вы хотите использовать в качестве общедоступного каталога? build // public напрямую должен быть построен
  • Настроить как одностраничное приложение (переписать все URL-адреса в /index.html)? Да // правила перезаписи да
  • Настроить автоматическую сборку и развертывание с помощью GitHub? (y / N) n // автоматическая сборка нет
  • Файл build / index.html уже существует. Перезаписать? (y / N) n // не следует переписывать самую важную часть index.html
  • firebase deploy // все готово.

Просто удалите ключ homepage из файла package.json, если вы также развернули его на GitHub. У меня это сработало, надеюсь, и у вас тоже.

Я обнаружил, что хостингу firebase требуется некоторое время для запуска всего вашего сайта. Для меня загрузка первый раз занимает около 30 минут. Последующие обновления должны загружаться мгновенно.

Если вы заметили в инструментах разработчика инспектора, что активна только html-страница, а не остальная часть страницы, то это может быть решением.

Так что мой совет - наберитесь терпения и выпейте чашку кофе :)

Другие вопросы по теме