浅谈vue项目4rs vue-router上线后history模式遇到的坑
此次项目开发完后准备打包,因为hash模式的路径带#看着实在是有点丑,所以采用history模式。因为本次项目属于以前网站重构,但是seo问题,所以需要以前的一些地址路径写,所以vue-router的路径全部重改了。打包后查了网上一大堆,都说要把config里的index.js 里的build里的
assetsPublicPath: '/'改成‘./',打包上线发现在hash模式下是没问题的,
但一旦改成history模式,有些动态js文件的路径都是错的。无奈之下死马当活马医,把‘./'改回了‘/'在history模式
下再次打包上线,发现点击跳转页面都是正常的,有些小激动。但是history模式的通病就是不能刷新,
因为原来跳转时其实不是通过请求服务器的,而是通过js操作history的API改变地址完成的。
当你刷新了之后浏览器就耿直的去请求服务器了,然而服务器没有这个路由,于是就404了。
解决方法1:可以做个代理,让所有访问服务器的地址都返回同一个入口文件。(推荐使用)
解决方法2:采用静态文件的形式让每个目录都存在就不会报错了
我们服务器是采用nginx,我不会,没弄,就自己用了nodejs和express搭建了个简单服务器,并采用了官方推荐的中间件
connect-history-api-fallback
使用方法:
在服务器app.js文件里引入
var history = require('connect-history-api-fallback'); 然后在app绑定路由之前绑定中间件, app.use(history({ rewrites: [ { from: /^\/wap\/.*$/, to: '/index.html' }//这个是正确方式 ]}));
我一开始
app.use(history({ rewrites: [ { from: /^\/wap\/.*$/, to: '/' } ] }));
这样的,发现刷新是正常的,但是路径后面总是多了个"/",看着很是奇怪,就试着改成当前下的html文件,发现真的可以。从此大功告成。
以上这篇浅谈vue项目4rs vue-router上线后history模式遇到的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
vue3+vite中使用import.meta.glob的操作代码
在vue2的时候,我们一般引入多个js或者其他文件,一般使用 require.context 来引入多个不同的文件,但是vite中是不支持 require的,他推出了一个功能用import.meta.glob来引入多个,单个的文件,下面通过本文介绍vue3+vite中使用import.meta.glob,需要的朋友可以参考下2022-11-11Vue 报错-4058 ENOENT:no such file or directory的原因及解决方法
Vue 报错-4058 ENOENT: no such file or directory的原因和解决办法,关于为什么为会报这个错误,按照字面意思的理解就是没有找到这个文件或这个路径,说明是路径不对,本文给大家分享解决方案,感兴趣的朋友一起看看吧2023-10-10vue.js利用Object.defineProperty实现双向绑定
这篇文章主要为大家详细介绍了vue.js利用Object.defineProperty实现双向绑定,帮大家解析神秘的Object.defineProperty方法2017-03-03
最新评论