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

使用Gin Router提供HTML文件时出现500错误,求代码修正方法

Gin框架返回index.html出现HTTP 500错误的修复方案

我正在练习使用Gin框架搭建Web服务器,尝试将index.html文件提供给Web浏览器,但运行代码后出现了HTTP 500错误,请问需要修改代码的哪些部分?

现有代码

main.go

package main

import (
    "comento/works/pkg/router"
    
)

func main(){
    r := router.Router()    
    r.Run(":8081")  
    
}

}

router.go

package router

import (
    // "comento/works/pkg/api"
    "github.com/gin-gonic/gin"
    "net/http"
    
)

func Router() *gin.Engine {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.Header("Content-Type", "text/html")
        c.HTML(http.StatusOK, "index.html", gin.H{})
    })

    return r
}

目录结构

works
├── go.mod
├── go.sum
├── images
├── index
│   └── index.html
├── internal
│   └── global.go
├── main.go
└── pkg
    ├── api
    │   └── image.go
    └── router
        └── router.go

需要修改的部分及原因

1. 修复main.go的语法错误

main.go末尾多了一个冗余的},这会导致编译失败,直接删除即可。

2. 显式指定模板文件路径

Gin默认会在templates目录下查找模板文件,但你的index.html存放在index目录中,因此需要在router.go中创建Gin引擎后,添加模板加载代码:

// 加载index目录下的所有模板文件
r.LoadHTMLGlob("index/*")

如果只想加载单个文件,也可以用:

r.LoadHTMLFiles("index/index.html")

3. 移除多余的Content-Type设置

c.HTML方法会自动设置Content-Type: text/html响应头,手动设置属于冗余操作,可直接删除。

修改后的完整代码

main.go

package main

import (
    "comento/works/pkg/router"
)

func main(){
    r := router.Router()    
    r.Run(":8081")  
}

router.go

package router

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func Router() *gin.Engine {
    r := gin.Default()
    // 加载index目录下的所有模板文件
    r.LoadHTMLGlob("index/*")
    
    r.GET("/", func(c *gin.Context) {
        c.HTML(http.StatusOK, "index.html", gin.H{})
    })

    return r
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:25:38