直接用engine.static("/", "./dist")会404,是因为vue router的history模式下,gin仅按真实文件路径查找,/user/profile等前端路由在dist目录中不存在物理文件,故返回404;必须通过noroute兜底返回index.html,由前端路由接管。

为什么直接用 engine.Static("/", "./dist") 会 404?
因为 Vue Router 默认用 history 模式,index.html 只在根路径(/)被正确返回;而访问 /user/profile 这类前端路由时,Gin 并不知道该返回 index.html,它只按真实文件路径查找 —— ./dist/user/profile 显然不存在,于是返回 404。
这不是 Gin 的 bug,是前后端路由职责错位:Vue 负责客户端路由跳转,但首次加载或刷新时,服务端必须兜底返回 index.html,让前端 JS 接管后续路由逻辑。
- 检查你的
router/index.js或router/index.ts:如果看到createWebHistory()或mode: 'history',就确认是 history 模式 -
engine.Static()只服务静态文件,不处理路由 fallback - 别指望改
publicPath或base能绕过这个问题 —— 它们影响资源路径解析,不解决服务端 404
用 http.FileServer + http.StripPrefix 手动 fallback
这是最轻量、兼容性最强的方案,不依赖 Go 版本,也不需要 embed。核心思路是:先尝试按路径找真实文件;找不到时,强制返回 ./dist/index.html。
示例代码片段(Gin v1.9+):
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
