Приложение React на страницах GitHub - в URL отсутствует имя репозитория

Храню изображения в папке public/assets/img. Затем я использую его в таком компоненте:

const imageUrl = "/assets/img/image.png"

Локально все работает нормально, но на страницах GitHub в URL-адресе изображения почему-то отсутствует имя моего репо, поэтому вместо

http://name.github.io/my-repo/assets/img/image.png Я получаю http://name.github.io/assets/img/image.png

Я следовал инструкциям по созданию сборки GitHub Pages и добавил в package.json URL-адрес моего проекта, а именно "homepage": "https://name.github.io/my-repo".

-- редактировать --

Кроме того, я только что понял, что, хотя маршрутизация, похоже, работает нормально, она также пропускает имя моего репозитория в URL-адресе, поэтому вместо

http://name.github.io/my-repo/subpage есть

http://name.github.io/subpage

Что мне здесь не хватает?

не могли бы вы попробовать с assets/img/image.png

Aamin Khan 24.12.2018 09:02

не работает тогда локально

Dandy 24.12.2018 09:04

Должен работать в git, когда вы используете /assets/..., на самом деле он разрешается в корень, так как вы находитесь внутри подкорня, которым является https://root/subroot, вам нужно удалить /

Aamin Khan 24.12.2018 09:08

Вы используете обычную настройку webpack? Вы использовали приложение create response?

Or Duan 24.12.2018 09:09

добавление косой черты перед активами приводит к локальному сбою изображения. Я пробовал добавить косую черту в конце пути к homepage, но это ничего не изменило. Я использовал приложение для создания реакции.

Dandy 24.12.2018 09:17

теперь я понял, что, хотя моя маршрутизация работает нормально, в URL-адресе отсутствует мое имя репо ... так что это http://name.github.io/subage. Я отредактировал свой пост

Dandy 24.12.2018 09:23

Вероятно, вам нужно указать /my-repo в <base> и использовать относительный путь assets/img/image.png вместо абсолютного.

Estus Flask 24.12.2018 10:07

Большое спасибо, у меня был белый экран при открытии локального сервера, я не мог понять почему, оказалось, что проблема была в package.json: неправильный URL на домашней странице, это было типа "github.com/DaLVeRS2001/DaLVeRS2001#readme", и это надо было так "github.com/DaLVeRS2001". Я из России. недавно я начал все это изучать.

VladBiricov 27.10.2020 14:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
8
457
1

Ответы 1

Итак, я каким-то образом решил свои проблемы, однако решения меня не совсем устраивают:

Устранение проблемы с URL-адресом (в URL отсутствует имя репо)

Я добавил свойство basename в свой маршрутизатор <BrowserRouter basename = "/repo-name">

Минусы: во-первых, он не выглядит хорошо запрограммированным. Во-вторых, npm start открывает пустой localhost:3000. Мне нужно добавить свое имя репо, чтобы открыть приложение локально, так что localhost:3000/repo-name - не слишком аккуратно.

Устранение проблемы с изображениями (также отсутствует имя репо в URL-адресе и, следовательно, не отображаются изображения)

Я добавил переменную process.env.PUBLIC_URL к URL-адресу изображения: const imageUrl = ${process.env.PUBLIC_URL}/assets/img/image.png. В локальной среде он пуст, при развертывании принимает значение homepage от package.json, то есть https://name.github.io/repo-name

Оборотная сторона: нужно добавлять process.env.PUBLIC_URL перед каждым изображением, отображаемым в компоненте.

Буду признателен за лучшее решение!

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