今天又又又踩坑。。天天都在踩坑的路上不停歇。。html
昨天將webpack開發模式(webpack-dev-server以及熱更新)和打包都完成了,今天又有新要求。前端
由於react-router基於browserHistory寫的,本身還readme裏友情提示了一下本地處理須要用hashHistory,結果就被懟了。不容許修改源代碼。。那我就開始頭痛了,由於browserHistory下打包好的靜態文件訪問就瘋狂報錯。node
度娘上查了一番 說法都是browserHistory須要服務器的支持。而後大哥又發話了:沒說必定不用服務器。。那就用node來部署一下靜態文件好了。react
app.use(express.static(path.resolve(__dirname, '../build')))
經過app.use將靜態文件傳到node服務器上,打開監聽的http://localhost:8080/ 發現網頁出來了跳轉到http://localhost:8080/login,暗自覺得能夠了,結果手賤按了一下刷新,報錯開始:Cannot GET /loginwebpack
node找不到這個路由,又開始頭痛,由於本身在前端用react-router寫了路由,node識別不出來,查了一下發現,node的路由優先級大於react-router路由。web
那麼前面只是將靜態資源上傳上去了,訪問http://localhost:8080/login時,node找不到/login這個路由,更找不到index.html這個頁面,那麼咱們須要將這個頁面傳上去,讓前端去對路由進行識別express
app.use(express.static(path.resolve(__dirname, '../build'))) app.use(function(req, res){ res.sendFile(path.resolve(__dirname, '../build/index.html')); })
再啓動,刷新 ok完事服務器