Мое приложение 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
У меня была такая же проблема, но решено, изменив "hosting" на "public": "build", снова запустите npm run build, а затем firebase deploy





Взгляните на свойство 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 для создания файлов сборки.
Какой смысл публиковать тот же ответ, что и я, через 8 часов после того, как я опубликовал свой ??
Этот параметр будет указывать общую папку на вашу папку сборки ... которая в данном случае является местом, где находятся созданные файлы :)
Вам также необходимо убедиться, что у вас есть хотя бы эти элементы в сценариях package.json ... "scripts": { "start": "react-scripts start", "build": "react-scripts build", "predeploy": "npm run build", "deploy": "firebase build" }
В моем случае мне нужно было иметь «public»: «build» и добавить массив «rewrites» в мой документ firebase.json.
Спасибо за этот ответ. Когда вы запускаете «firebase init», он спрашивает: «Что вы хотите использовать в качестве общедоступного каталога?». Если вы здесь ответите «build», вместо того, чтобы принять значение по умолчанию «public», это приведет к тому же поведению. (Перед этим нужно выполнить команду "npm run build", чтобы убедиться, что она работает)
Еще одна вещь, которую вы также можете проверить, не работает ли изменение файла firebase.json.
Application->Clear Storageclean site datarefresh приложение.В некоторых случаях это работает.
После того, как вы инициализировали приложение 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-адреса на основе свойства домашней страницы. Удалил свойство и все заработало.
Это было решением и для меня. Поэтому я предпочитаю Firebase Github.
Если изменение свойства '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"
}
]
}
}
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
Просто удалите ключ homepage из файла package.json, если вы также развернули его на GitHub.
У меня это сработало, надеюсь, и у вас тоже.
Я обнаружил, что хостингу firebase требуется некоторое время для запуска всего вашего сайта. Для меня загрузка первый раз занимает около 30 минут. Последующие обновления должны загружаться мгновенно.
Если вы заметили в инструментах разработчика инспектора, что активна только html-страница, а не остальная часть страницы, то это может быть решением.
Так что мой совет - наберитесь терпения и выпейте чашку кофе :)
Вы запускали
npm run build?