Vue + Electron-builder ,Router 为什么不支持 history 模式
不论是网上的各种教程,还是自己尝试之后,发现开发环境下,可以正常访问页面,但是一旦打包之后,只有 hash 模式可以访问页面,history 模式是一片空白。
求助各位大佬,能否帮忙答疑解惑下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为调试模式下会开启
node.js
的http服务
,当你访问类似/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的话,也会出现错误。
可以看看是跨域的问提还是