问题发生:
路由模式为history(原来是hash)=》打包=》打开后发现是空白页 /Users/each/desktop/demo/dist/index.html
空白原因:
(1)资源路径不对
f12检查资源是/xx.js,表示根目录,如果项目不在根目录,那就是错误的。
需要修改为相对路径 ./xx.js。
(2)history请求不到访问
hash的路径是通过#来模拟完整路径的,并不会重新加载页面,所以自然不会有问题。
而history模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面,但是直接进入url,比如http://oursite.com/user/id,nginx就会根据你的路由寻找页面,这时候需要没有响应的配置就会404.
解决:
(1)配置vue.config.js
默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/ 。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/ ,则设置 publicPath 为 /my-app/
https://cli.vuejs.org/zh/config/#publicpath
(2)配置nginx
开发流程:
在开发时,前端测试使用hash模式,这样内容是可以正常显示的
在上线时,为了路径好看使用history模式
需要注意路径问题,如果项目不部署在根目录就需要配置Nginx或其它服务器文件。如果根目录访问的是后端服务的话,让后端重定向到前端页面路径。
总结
本质上就是路径不对