react-router打包後沒法經過路由進入到頁面

react-router打包後沒法經過路由進入到頁面,是由於當咱們使用react-router-dom裏的BrowserRouter as Router時,是用瀏覽器history對象的方法去請求服務器,react

若是服務器沒有相對於的路由去指向對應的頁面路由會找不到資源。webpack

BrowserRouter會變成相似這樣的路徑  http://111.230.139.105:3001/detail/9459469,這樣的路徑在訪問服務器時,服務器會認爲是請求查找某個接口數據web

This request URL /detail/9459469 was not found on this server.

因此這時候必須使用HashRouter,這時候訪問具體頁面時就是http://111.230.139.105:3001/#/detail/9459469瀏覽器

import { HashRouter as Router, Route } from 'react-router-dom'
import createHistory from 'history/createHashHistory'
const history = createHistory()

<Router history={history}>
             <Route render={({ location }) => {
                  return(
                        <div>
                            <Route location={location} exact path="/" component={Home} />
                            <Route location={location} path="/detail/:id" component={Detail} />
                            <Route location={location} path="/comment/:id" component={Comment} />
                        </div>
                  )}}/>
        </Router> 

 

webpack打包時要添加NODE_ENV,而且將devtool:'eval-source-map',去除,否則build出來的js特別大,source map是爲了代碼出錯後採用source-map的形式直接顯示你出錯代碼的位置服務器

打包生產包時去除,加上這兩個後大部分簡單單頁面應用會在100k到200kreact-router

new webpack.DefinePlugin({
    "process.env": {
    NODE_ENV: JSON.stringify("production")
    }
}),    
// devtool:'eval-source-map',
相關文章
相關標籤/搜索