Пытаюсь развернуть приложение create-реагировать на netlify, однако моя сборка пустая страница. Я использую файл .env для загрузки ключа Firebase API, это проблема для сборки?
Даже когда я пытался открыть его локально на своем компьютере, его пустая страница и вывод ошибки в консоли: «Ошибка загрузки файла с исходным кодом: ///event-app/static/js/main.108757a0.js»
пакет.json: https://gist.github.com/Verthon/f82371ad2bb636b2e95c5b7697aa0bb5
➜ event-app git:(master) ✗ npm run build
> [email protected] build /home/jurr/Projects/event-app
> node scripts/build.js
Creating an optimized production build...
Compiled with warnings.
./src/components/Router.js
Line 12: 'withFirebase' is defined but never used no-unused-vars
./src/components/Firebase.js
Line 21: 'Firebase' is defined but never used no-unused-vars
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
File sizes after gzip:
282.86 KB build/static/js/main.108757a0.js
3.1 KB build/static/css/main.8e671453.css





Я решил проблему, установив
"homepage": "."
в package.json согласно этот документ
Да, см. мой ответ ниже.
В моем случае решение заключалось в том, чтобы добавить параметр onload к загружаемым скриптам Google API, как в документы клиента google api, упомянутом здесь.
это решило мою проблему, но как я могу разместить свое приложение на github, если я задаю своей домашней странице значение, например "." ?
Добавлять
"homepage": ".",
в вашем package.json, затем снова постройте.
Итак, проблема заключается в кэшировании вашего приложения в браузере.
Я решил эту проблему с serviceWorker() в create-react-app.
Вот решение: просто добавьте это в свой файл index.js и удалите реестр сервисного работника.
import { unregister } from './registerServiceWorker';
unregister();
Беги npm run eject
Отредактируйте файл webpack.config в папке config
Найдите путь с "static/" или "static/js/" или "static/css/" в файле и удалите такой путь
Создайте свой проект снова
Эта работа для меня. надеюсь, это сработает и для вас.
Как сказал @Вертон, добавив "homepage": ".", в файл package.json, в высший уровень вот так:
{
"name": "myApp",
"homepage": ".",
// all other package.json stuff...
}
Вы спасли меня здесь, спасибо, сэр! Интересно, почему это нигде не отражено в документации, если только я не проглядел?
Если вы используете react-router и пытаетесь открыть index.html прямо в браузере (или используете электрон, который, по сути, и делает это), в дополнение к настройке homepage, как предлагали другие, замените BrowserRouter на HashRouter.
Я пытался создать электронное приложение, используя приложение create-реагировать. При запуске в разработке все было нормально, но когда я создал CRA, а затем указал электронному приложению на файл index.html, я получил пустую страницу.
Я обнаружил, что это точно так же, как открытие файла index.html непосредственно в браузере. Все говорят "установить homepage в package.json", но у меня это уже было. И что теперь!?
В конце концов я понял, что проблема была react-router. Я использовал BrowserRouter. Переход на HashRouter решил проблему для меня.
Блин, это спасло мне жизнь
Чувак, мне тоже жизнь спас. у вас есть идеи, почему HashRouter работает?
HashRouter работает, потому что ничего после «#» в URL-адресе не отправляется на «сервер». Эта часть URL-адреса интерпретируется только реагирующим маршрутизатором.
Это очень эффективное решение. Спасибо.
спасибо за Ваш ответ. это работа, но после того, как я попытался щелкнуть на другую страницу, не могу перенаправить.
Это решило проблему и для меня, большое спасибо! Но знаем ли мы, почему? Это известная ошибка?
Решено и для меня! Спасибо. Интересно, почему это не работает с pushstate-сервером.
Спасибо, что сэкономили мое время.
HashRouter работал отлично, с react-router-dom.
ЭТО! Спасибо за спасение жизней, чувак. Есть ли у нас какая-либо документация, где это подробно описано?
Это доказательство того, что не все герои носят плащи. А если кому интересно подробнее про HashRouter, смотрите stackoverflow.com/a/51976069/9231525
Использование HashRouter вместо BrowserRouter устранило проблему для меня при запуске приложения с префиксом, таким как www.site.com/appprefix/ и PUBLIC_URL=/appprefix/, установленным во время сборки. Однако, BrowserRouter тоже нормально работает, если явно задать basename=process.env.PUBLIC_URL
Можем ли мы использовать это для нашей производственной среды, такой как AWS ec2 и nginx?
Я пытался открыть приложение после сборки, дважды щелкнув index.html, и это тоже не сработало, я получил пустую страницу, но если встроенные файлы запускаются в серверной среде, работает. https://create-react-app.dev/docs/deployment/
Оооо, как я только что узнал, что я делал снова и снова: вы опубликовали папку публичный вместо папки строить.
Я ненавижу, что это была моя ошибка. Интересно, есть ли учебник, в котором говорится «например: общедоступный» для инструкций по созданию папки, которым мы оба следовали.
Это вполне может быть. Но в моем случае это был просто кратковременный сбой мозговой активности... :-)
У меня был комментарий внутри моего метода return, и это вызвало у меня проблему.
Если сообщение об ошибке в консоли браузера
Minified React error #152;
Тогда удаление любого комментария внутри метода return может решить вашу проблему, как и мою.
Для меня проблема заключалась в том, что встроенный сценарий выполнения не запускался, так как я получал сообщение об ошибке:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-5='), or a nonce ('nonce-...') is required to enable inline execution.
Это было исправлено путем добавления переменной INLINE_RUNTIME_CHUNK=false в скрипт сборки.
"build": "INLINE_RUNTIME_CHUNK=false react-scripts build",
Это связано с Политика безопасности контента браузеров: «Браузер, совместимый с CSP, будет выполнять только сценарии, загруженные в исходные файлы, полученные из этих разрешенных доменов, игнорируя все остальные сценарии (включая встроенные сценарии и HTML-атрибуты обработки событий)».
Я столкнулся с подобной проблемой. Но если вы будете правильно следовать React-развертывание, вы поймете, что есть "домашняя страница":"." // Пользователь "." если вы развертываете на своем локальном компьютере, но на сервере, размещенном где-то, вы можете использовать свой домен или IP-адрес в поле домашней страницы.
{
"homepage":"https://example.com"
}
Я получаю пустую страницу даже после добавления "." в качестве домашней страницы. Любые подсказки о том, что еще может быть не так