欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue-cli打包后打开后index.html 文件白屏问题

程序员文章站 2022-06-13 15:51:59
...

打开 dist index.html 文件发现白屏。打开调试后发现什么也没有,也没有报错。
根据以往的经验如果是文件路径报错,一般在根目录下新建 vue.config.js
配置publicPath就行了,或者直接在vue-ui上的配置文件加个点就好。

publicPath:"./"

各种百度,发现都是叫我配publicPath,但我已经配好了。

百思不得其解,自己慢慢摸索终于发现了问题:
不知道怎么自己的mode变成了history,默认是hash模式

var router = new Router({
mode: 'history'
})

mode

类型: string

默认值: “hash” (浏览器环境) | “abstract” (Node.js 环境)

可选值: “hash” | “history” | “abstract”

配置路由模式:
hash: 使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器。

history: 依赖 HTML5 History API 和服务器配置。

abstract: 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式。

Hash模式:

在浏览器中符合“#”,#以及#后面的字符称为hash,用window.location.hash读取
特点:hash虽然在URL中,但不被包括在HTTP请求中;用来直到浏览器动作,对服务端安全无用,hash不会重新加载页面。
Hash模式下,仅hash符号之前的内容被包含在请求中,如http://www.xxx.com,因此对于后端来说,即使没有做路由全覆盖,也不会返回404错误。

History模式:

Historty采用HTML5新特性,且提供两个新的方法pushState(),replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态的变更。
History模式下,前端的URL必须和实际向后端发起请求的URL一致,如http://www.xxx.com/items/id。后端如果缺少对/items/id的路由处理,将会返回404错误。Vue-router官网里如此描述:“不过这种模式要完好,还需要后台配置支持…所以,你要在服务端添加一个覆盖所有情况的候选资源。如果url匹配不到任何静态资源,则应该返回同一个index.html页面,这个页面就是你app依赖的页面。”

如果使用history模式上线,必须要服务端在服务器上有对应的模式才能使用history(看上面链接),如果服务器上没有配置,可以先使用默认的hash;

相关标签: 前端 面试 bug