react 單頁面應用采用browserHistory路由 部署在nginx做靜態資源服務時刷新采坑記錄


用React、React-Router、Antd、React-Redux 技術棧做了一個SPA應用,Redux存儲應用的狀態,一按F5 美好的世界瞬間坍塌,本着新技術不能影響用戶體驗的原則,一頓操作。從React-Router中 path 對應的 component入手,component需要什么數據去后端請求什么數據。雖然請求冗余了點,但坍塌的世界又美好了起來。自測完成后npm run build 一下,包打出來了,丟到nginx上一試到處報錯,好多404。從此開始我的單頁面應用的采坑記錄。。。

前置環境:create-react-app 創建的工程,React-Router 用的是 browserHistory

404 靜態資源找不到問題

              

 nginx的匹配規則設置如下:

          

默認情況下,這個構建好的靜態資源static 文件夾放到nginx 的html 文件夾下也是可以請求到資源的,但是每次都拷貝來拷貝去太麻煩了。偷個懶吧,把這個改成“./”

又發布了一版,嘿嘿可以了。頁面顯示正常

按下F5, 熟悉的 Nginx的404 頁面跳出來了。到開發環境試試沒問題啊,斷定是Nginx匹配規則的問題。開始百度rewrite的匹配規則怎么寫,nginx -s reload 重啟測試的要吐了,還是搞不定。

最后找到關鍵詞 try_files,但好多人都是如下:

      

放到我的測試環境還是不行。各種搗鼓: 最后寫成如下這樣,我按F5,看到了希望。

       

 頁面的靜態資源是我們剛才設置的“./”這種寫法,有些路由還是報錯: Uncaught SyntaxError: Unexpected token <,但是沒出現 Nginx 404,看到一點點希望,繼續找度娘,有帖子說要不要用相對路徑用絕對路徑,看控制台一直提示:

     

 把原來的“./”,恢復原狀,在package.json中加一個吧。把工程名作為value值。

            

再一頓操作。居然可以了。所有刷新測試了一遍,可以啦。O(∩_∩)O哈哈~

先記錄一下,總結:稍后完善

參考:https://segmentfault.com/a/1190000008777307  

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM