Vue + Electron-builder ,Router 为什么不支持 history 模式

不论是网上的各种教程,还是自己尝试之后,发现开发环境下,可以正常访问页面,但是一旦打包之后,只有 hash 模式可以访问页面,history 模式是一片空白。
求助各位大佬,能否帮忙答疑解惑下。

阅读 7k
3 个回答

因为调试模式下会开启 node.jshttp服务,当你访问类似 /index/page/1/2/3 的时候,其实真实目录下是没有这个文件的, 而 node.js 可以识别并帮助重定向到 /index 也就是入口。

但是一但打包之后,页面就是静态页面存放在目录中了,electrion 仅仅是使用他的特殊浏览器打开本地静态页面而已,那么本地静态页面是没有 /index/page/1/2 这样的目录的,当然就找不到了。

假设你electron配置的入口页面是 ./dist/index.html
hash模式请求的url是host/index.html#page_a host/index.html#page_b 这样,通过hash值来显示对应的内容,但实际一直在./dist/index.html页面。
history模式下请求的url变成了host/page_a/index.html host/page_b/index.html,在开发环境node.js的http服务自动帮你处理了这段url,将所有请求都指向了./dist/index.html,所以一切正常,但是打包后的程序是不会对这段url做处理的,在目录里找不到host/page_a/index.html文件就显示空白了。

同样如果是web项目使用了history模式打包的文件,如果不在nginx中将全部url指向./index.html的话,也会出现错误。

可以看看是跨域的问提还是

推荐问题