You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3使用createWebHistory仍有#符号,如何移除URL中的#?

Vue3中createWebHistory模式URL仍带#的问题解决

从你提供的路由代码来看,createWebHistory的调用写法是正确的,但URL仍保留#,可以从以下几个方面排查解决:

1. 确认路由导入语句是否正确

检查router文件顶部的导入代码,必须确保导入的是createWebHistory而非createWebHashHistory:

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'

如果误导入了createWebHashHistory,即便实例化时写createWebHistory也不会生效,这是最常见的疏漏点。

2. 验证process.env.BASE_URL的有效性

在路由实例创建前打印process.env.BASE_URL的值,确认其为预期的基础路径(开发环境通常为/):

console.log(process.env.BASE_URL) // 开发环境应输出 "/"
const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes,
});

如果BASE_URL为空或异常值,可能导致路由自动 fallback 到hash模式。

3. 检查是否存在代码覆盖或第三方干扰

确认路由实例创建后,没有其他代码修改路由的history模式,也没有第三方插件(如权限控制、埋点工具)强制切换为hash模式。

4. 规范路由配置(非直接原因,但建议修正)

你的子路由path写为/projects,虽然不影响功能,但不符合嵌套路由的规范。父路由已设置path: "/",子路由应去掉开头的/,写成"projects",路由会自动拼接为/projects:

children: [
  {
    path: "projects", // 去掉开头的/
    name: "projects",
    component: () => import("@/views/projects/index.vue"),
  },
],

最后操作

  • 清理浏览器缓存,重启开发服务器
  • 手动去掉地址栏中的#后刷新页面,确认路由是否正常切换为history模式

内容的提问来源于stack exchange,提问作者Sponge Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:35:24