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