2016-02-14 66 views
4

我有一個小問題,有幾個類似的問題已經在SA上了,但我無法弄清楚如何解決這個問題。我使用react-router-redux但在這個例子中,我不認爲有使用react-router反應路由器熱加載不工作

我有一個簡單的設置的任何差異:

<Router history={browserHistory}> 
    <Route path="/"> 
    <IndexRoute component={ItemList}/> 
    <Route path='item/:uuid' component={Item}/> 
    <Route> 
<Router> 

我使用:

  • 的WebPack
  • webpack-dev-server
  • html-webpack-plugin

當我訪問本地主機:8080 IndexRoute呈現。然後我可以按其中一個設置了onClick={() => this.props.dispatch(routeActions.push('/item/' + item.uuid))}的項目。在這個階段的歷史工作正常,我可以回去選擇另一個項目等等。但是......

當我是一個網頁,例如本地主機上:8080 /項目/ 1234,當我打刷新我得到:

404 not found - localhost:8080/item/bundle.js

這時候我做出一些改變,以及發生到物品頁面並且熱重裝正在重新渲染它。

通過幾個問題去後,我可以證實,我有historyApiFallback: true,當我啓動服務器則報道說404s will fallback to /index.html

更新:

所以,當我打刷新是對localhost:8080/item/1234鉻檢查後說是從服務器200響應,它看起來像:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    <title>Damage Increased</title> 
    </head> 
    <body> 
    <script src="bundle.js"></script> 
    </body> 
</html> 

然後是404 http://localhost:8080/item/bundle.js

它看起來像所有的開發服務器的東西工作正常,服務器確實返回索引文件,但然後<script src="bundle.js"></script>正在尋找/item子內的bundle.js文件。

+0

有你有一些回購有問題的,所以我們可以看看問題? –

+0

我手邊沒有任何東西,但我會設置一些東西 - 直到我今天晚上回到家中才會出現。 – Kocur4d

+0

確定只是提及我或發送消息,所以我可以查找:) –

回答

4

相反的:

<script src="bundle.js"></script> 

務必:

<script src="/bundle.js"></script> 

因爲當你直接訪問/item/1234,目前,你有一個相對鏈接到bundle.js因此瀏覽器將調用/item/bundle.js

如果您使用html-webpack-plugin,你可以添加一些重寫規則到你的開發服務器(你將不得不添加到您的生產企業之一) - see more here

+0

此文件是由html-webpack-plugin生成 – Kocur4d

+0

@ Kocur4d對我的回答做了一些編輯 - 你的問題似乎在'html-webpack-plugin'和你的'webpack-dev-server'的配置之間 – topheman

+0

是的它看起來像當我從兩條路線和push狀態動作中刪除/ item時,只留下/:uuid的淺層映射 - 這一切都工作正常。 webpack有一個publicPath選項,我試着用它。從未見過任何人在tho之前提及過publicPath。 – Kocur4d