Vue项目部署后 刷新页面就404
今天部署将vue3+vite项目部署在nginx上,运行是没有问题,就是只要一刷新页面,就会报404,之前也部署过vue2+vuecli的项目,并没有出现过这种错误。于是想问题是不是出在vue3 或者 vite上。
经过一番查资料发现并不是,问题是出在之前vue2项目使用的vue-router是hash模式(路径中有#),而这个项目使用的vue-router是history模式的
history模式中会出现这样的问题,具体原因看大佬的解释好像是因为路由跳转是js操作,直接输入路径(或刷新路径后),服务器没有匹配的处理方法,因此需要将请求转交给js去执行。具体原因等以后有空学习一下vue-router的源码才能理解。这里先将问题解决。
第一种解决方法
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; # 在配置文件的此处加上这句话 try_files $uri $uri/ /index.html; } }
第二种解决方法:
将vue路由模式mode: ‘history’ 修改为 mode: ‘hash’
//router.js文件 const router = new Router({ //mode: 'history', mode: 'hash', routes: [ { path: '/', redirect: '/login' }, { path: '/login', component: Login }, ] })