0
votes

Gin always reports errors when loading index.html

r := gin.New()
r.Use(gin.Logger())
r.Use(gin.Recovery())
r.LoadHTMLGlob("views/**/*")
r.GET("/", func(g *gin.Context) {
    g.HTML(http.StatusOK, "index/index.html", gin.H{
        "title":"test",
    })

2018/11/27 20:23:46 [Recovery] 2018/11/27 - 20:23:46 panic recovered:
GET / HTTP/1.1
Host: localhost:8080
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: pix_k=admin; pix_v=L5lsdrVKJmpAa21DGibdbA%3D%3D
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36


write tcp [::1]:8080->[::1]:55738: i/o timeout
C:/Go/src/runtime/panic.go:505 (0x4300c7)
    gopanic: reflectcall(nil, unsafe.Pointer(d.fn), deferArgs(d), uint32(d.siz), uint32(d.siz))
G:/gowork/src/github.com/gin-gonic/gin/context.go:725 (0xae81de)
    (*Context).Render: panic(err)
G:/gowork/src/github.com/gin-gonic/gin/context.go:734 (0xae82a6)
    (*Context).HTML: c.Render(code, instance)
G:/gowork/src/ihaveadream/routers/routers.go:18 (0xaffa91)
    InitRouter.func1: g.HTML(http.StatusOK, "index/index.html", gin.H{
G:/gowork/src/github.com/gin-gonic/gin/context.go:108 (0xae3952)
    (*Context).Next: c.handlers[c.index](c)
G:/gowork/src/github.com/gin-gonic/gin/recovery.go:52 (0xafca97)
    RecoveryWithWriter.func1: c.Next()
G:/gowork/src/github.com/gin-gonic/gin/context.go:108 (0xae3952)
    (*Context).Next: c.handlers[c.index](c)
G:/gowork/src/github.com/gin-gonic/gin/logger.go:84 (0xafb889)
    LoggerWithWriter.func1: c.Next()
G:/gowork/src/github.com/gin-gonic/gin/context.go:108 (0xae3952)
    (*Context).Next: c.handlers[c.index](c)
G:/gowork/src/github.com/gin-gonic/gin/gin.go:362 (0xaee92c)
    (*Engine).handleHTTPRequest: c.Next()
G:/gowork/src/github.com/gin-gonic/gin/gin.go:328 (0xaee403)
    (*Engine).ServeHTTP: engine.handleHTTPRequest(c)
C:/Go/src/net/http/server.go:2694 (0x7643ca)
    serverHandler.ServeHTTP: handler.ServeHTTP(rw, req)
C:/Go/src/net/http/server.go:1830 (0x75f118)
    (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req)
C:/Go/src/runtime/asm_amd64.s:2361 (0x45bcb0)
    goexit: BYTE    $0x90   // NOP


2018/11/27 20:23:46 [Recovery] 2018/11/27 - 20:23:46 panic recovered:
GET / HTTP/1.1
Host: localhost:8080
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: pix_k=admin; pix_v=L5lsdrVKJmpAa21DGibdbA%3D%3D
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36


write tcp [::1]:8080->[::1]:55736: i/o timeout
C:/Go/src/runtime/panic.go:505 (0x4300c7)
    gopanic: reflectcall(nil, unsafe.Pointer(d.fn), deferArgs(d), uint32(d.siz), uint32(d.siz))
G:/gowork/src/github.com/gin-gonic/gin/context.go:725 (0xae81de)
    (*Context).Render: panic(err)
G:/gowork/src/github.com/gin-gonic/gin/context.go:734 (0xae82a6)
    (*Context).HTML: c.Render(code, instance)
G:/gowork/src/ihaveadream/routers/routers.go:18 (0xaffa91)
    InitRouter.func1: g.HTML(http.StatusOK, "index/index.html", gin.H{
G:/gowork/src/github.com/gin-gonic/gin/context.go:108 (0xae3952)
    (*Context).Next: c.handlers[c.index](c)
G:/gowork/src/github.com/gin-gonic/gin/recovery.go:52 (0xafca97)
    RecoveryWithWriter.func1: c.Next()
G:/gowork/src/github.com/gin-gonic/gin/context.go:108 (0xae3952)
    (*Context).Next: c.handlers[c.index](c)
G:/gowork/src/github.com/gin-gonic/gin/logger.go:84 (0xafb889)
    LoggerWithWriter.func1: c.Next()
G:/gowork/src/github.com/gin-gonic/gin/context.go:108 (0xae3952)
    (*Context).Next: c.handlers[c.index](c)
G:/gowork/src/github.com/gin-gonic/gin/gin.go:362 (0xaee92c)
    (*Engine).handleHTTPRequest: c.Next()
G:/gowork/src/github.com/gin-gonic/gin/gin.go:328 (0xaee403)
    (*Engine).ServeHTTP: engine.handleHTTPRequest(c)
C:/Go/src/net/http/server.go:2694 (0x7643ca)
    serverHandler.ServeHTTP: handler.ServeHTTP(rw, req)
C:/Go/src/net/http/server.go:1830 (0x75f118)
    (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req)
C:/Go/src/runtime/asm_amd64.s:2361 (0x45bcb0)
    goexit: BYTE    $0x90   // NOP
2
Can you please show a package structure?Alex Pliutau

2 Answers

0
votes

If your index.html file is located in views/index/index.html, you should use this wildcard. Also try to use ./.

r.LoadHTMLGlob("./views/*")
r.GET("/", func(g *gin.Context) {
  g.HTML(http.StatusOK, "index/index.html", gin.H{
    "title":"test",
  }
)
0
votes

This problem dose not seem to be caused by template load,could you show your package info or show more code?

There is my package:

views
-|index
-|-|index.html
main.go

main.go:

package main

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

func main(){
    router := gin.Default()
    //define template dir
    router.LoadHTMLGlob("views/**/*")
    // handel router
    router.GET("/",func(c *gin.Context){
        c.HTML(http.StatusOK,"index/index.html",gin.H{
            "title":"test",
        })
    })

    router.Run(":8080")
}

views/index/index.html:

{{define "index/index.html"}}
    asdds
{{end}}

The demo can run normally.I found that only one difference is that if you use subdir in LoadHTMLGlob, I should define the template in html look like that:

{{define "index/index.html"}}{{end}}