前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue 的history模式下去掉#号后的坑...............

vue 的history模式下去掉#号后的坑...............

作者头像
@派大星
发布2023-06-28 10:57:26
2940
发布2023-06-28 10:57:26
举报
文章被收录于专栏:码上遇见你码上遇见你

解决vue history模式下,部署到服务器 出现空白页情况。

问题描述:

  vue搭建的项目,路由一直用的hash模式,所以url中都会带有一个“#”号。现在想要去掉“#”,于是使用history模式 { mode: 'history' },代码如下:

代码语言:javascript
复制
import Vue from ‘vue’;import App from ‘./App’;import routers from ‘./router’;import VueRouter from ‘vue-router’;

Vue.use(VueRouter);const router = new VueRouter({
  mode: ‘history’,
  routes: routers
});

/ eslint-disable no-new /new Vue({
  el: ‘#app’,
  router,
  components: {App},
  template: ‘‘
});

mode: 'history',使用这个模式,在开发阶段一切都是正常的,访问地址是localhost:8888,以上没什么错误,一切都好用。url里也没有#了。可是打包之后,访问项目会发现页面一片空白的情况。不是404,不报错,只是空白!!

解决办法如下:

很多项目都放在了服务器根目录下面,访问后的url就是:http://xxx.com 或者http://10.188.11.22:9090,这是一种解决办法

假如我的项目没有放在服务器根目录下,放在了服务器的nice/app或者dist下,那么打开地址是:http://123.com/nice/app或http://10.188.11.22:9090/dist/

那么这里问题就来了,我们配的路由中并没有nice/app或者/dist,所以无法找到路径中的组件,所以也就无法渲染了。这就是导致空白的原因!

   此时只需要修改router中的index.js,给路由中加一个base的属性,值为 ‘/nice/app/’就可以了。代码:

代码语言:javascript
复制
const router = new VueRouter({
  mode: 'history',
  base: '/nice/app/',
  routes: routers
});

 记住这个base,base值两边一定要有"/",不要写成“nice/app”、“/nice/app”或者“nice/app/”。

 其次,这个文件夹是服务器放项目的文件夹,不是你本地项目的文件夹位置!!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码上遇见你 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档