У меня есть приложение React с навигацией, основанная на react-router
, которую я запускаю в разработке с помощью webpack-dev-server
и включен параметр предыстории истории. Вот маршруты я, определенные в моем index.js
Реакция вложенного маршрута не загружается при обновлении
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRedirect to="/intro" />
<Route path="/intro" component={Intro} />
<Route path="/device" component={Device} />
<Route path="/clothing" component={Clothing} />
<Route path="/build" component={Build}>
<IndexRedirect to="/build/pattern" />
<Route path="/build/pattern" component={Pattern} />
<Route path="/build/layout" component={Layout} />
<Route path="/build/color" component={Color} />
</Route>
<Route path="/capture" component={Capture} />
<Route path="/review" component={Review} />
</Route>
</Router>
), document.getElementById('app'))
Когда я перемещаться по ссылкам, все работает отлично, и я могу видеть вложенные компоненты маршрута гнездования в пределах их компонентов родительского маршрута, как и ожидалось. Например, когда я перехожу к /build/color
, я вижу, что мой компонент App
вложен в компонент Build
, вставляющий компонент Color
.
Если это не удается, я пытаюсь нажать кнопку обновления внутри вложенного маршрута. Реагировать полностью не загружается, и я получаю следующую ошибку
GET http://localhost:8080/build/app.js 404 (Не найдено)
Существует действительно не такой файл в моем приложении, но я до сих пор путают, почему это автоматически ищет этот файл вместо перезагрузки маршрута из корня. Обратите внимание, что обновление обновления на страницах, таких как /device
, работает без проблем.
Дайте мне знать, если вам нужна дополнительная информация о моей настройке. Спасибо!
Решение:
Моя webpack
установка на самом деле использует HtmlWebpackPlugin
, который был инъекционный путь к моей приложения пачке следующим
<script src="app.js" type="text/javascript"></script>
Все, что мне нужно было сделать, чтобы настроить мой webpack
общественный путь как publicPath: '/'
, так что пучок будет впрыскиваться следующим образом:
<script src="/app.js" type="text/javascript"></script>
Моя настройка webpack в настоящее время вводит мой пакет приложений как '', который дает результат, похожий на './App.js' в моем случае. Мне просто нужно настроить webpack, чтобы ввести абсолютный путь в мой пакет. Если у вас также есть решение для этого, я бы взял его слишком :) – Ucodia
Если вы используете HTML-пакет HTML для создания HTML-кода, вам нужно установить 'webpackConfig.output.publicPath = '/'' – niba
Прямо на точке @niba. Это решило мою проблему. благодаря –