On my Ubuntu 22.10 digitalocean server, I'm experimenting with Golang and Fiber and the html template engine. Loving it so far.
It all works, including the Mysql connection and sending email. Except for one thing.
I keep getting the error render: template index does not exist.
File system:
├── /gogo
├── main
├── main.go
├── go.mod
├── go.sum
├── /views
└── index.html
└── /public
└── plaatje.png
The code of my main.go:
package main
import (
"fmt"
"log"
fiber "github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html"
)
func main() {
// Initialize standard Go html template engine
template_engine := html.New(
"./views",
".html",
)
// start fiber
app := fiber.New(fiber.Config{
Views: template_engine,
})
// add static folder
app.Static(
"/static", // mount address
"./public", // path to the file folder
)
// endpoint
app.Get("/", func(c *fiber.Ctx) error {
// Render index template
return c.Render("index", fiber.Map{
"Title": "It works",
"Plat": "almost",
})
})
log.Fatal(app.Listen(":9990"))
}
The index.html file:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<title>{{.Title}}</title>
</head>
<body>
<h1>{{.Title}}</h1>
<p>{{.Plat}}</p>
<p><img src="./static/plaatje.png"></p>
</body>
</html>
When I run it locally on my Mac, it all works and the template is rendered as it should.
But on the Ubuntu server it all works except for the template, with the given error:
render: template index does not exist
I've tried changing ownership and permissions in Ubuntu: no results. However this is a bit of a blind spot for me, so this might still be the isue...
I've tried tinkering with the views path (./views, /views, views. etc): no results.
I've tried return c.Render("index.html", fiber.Map{
: no results.
What am I missing?
Look for an error, it will come out above the box of Fiber info. For me it was this: 2023/03/12 15:40:58 [Warning]: failed to load views: template: apply:9: function "t" not defined
. If your templates compile, they will be found using the relative path.