Go Gin服务器如何配置以正常服务所有嵌套静态文件资源
问题原因
当前仅通过StaticFile配置了根路径/的单文件返回规则,未为_app等存放JS、CSS资源的静态目录配置路由匹配逻辑,所有非根路径的资源请求无对应处理逻辑,导致加载失败。
正确配置代码
router := gin.Default() // 将根路径下的所有请求映射到本地build静态资源目录 // 若请求路径匹配到目录下存在的实体文件(JS、CSS、图片、favicon等),会直接返回对应文件 router.Static("/", "./build") // 单页应用(Svelte/React/Vue)需添加路由兜底:路径不存在时统一返回index.html,交给前端路由解析 router.NoRoute(func(c *gin.Context) { c.File("./build/index.html") })
配置注意事项
router.Static是Gin原生提供的静态目录服务方法,会自动递归遍历映射静态根目录下的所有子目录、文件,无需为/_app这类子资源路径单独编写路由- 静态资源路由必须定义在
NoRoute兜底规则之前,否则静态资源请求会被兜底逻辑拦截返回HTML,触发MIME类型错误 - 若服务启动的工作目录和代码预期不一致,相对路径
./build会定位失败,生产环境建议替换为build目录的绝对路径 - 配置完成后,index.html中引用的模块预加载JS、CSS等所有嵌套资源,都会自动匹配到本地对应文件正常响应
内容的提问来源于stack exchange,提问作者sandeep.kgp
相关产品推荐
相关产品推荐

