项目打包出现空白页


问题发生:

路由模式为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

https://v3.router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90

开发流程:

在开发时,前端测试使用hash模式,这样内容是可以正常显示的

在上线时,为了路径好看使用history模式

需要注意路径问题,如果项目不部署在根目录就需要配置Nginx或其它服务器文件。如果根目录访问的是后端服务的话,让后端重定向到前端页面路径。

总结

本质上就是路径不对


文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录