我在使用 Go Fiber 的静态文件服务器时遇到问题。我想加载一个在模板中使用的 CSS 样式表。模板本身工作正常。
func main() {
// Create a new engine.
engine := html.New("./views", ".html")
// Fiber instance
app := fiber.New(fiber.Config{Views: engine})
app.Static("/static", "./views")
app.Get("/layout", func(c *fiber.Ctx) error {
// Render index within layouts/main
return c.Render("index", fiber.Map{
"Title": "Hello, World!",
}, "layouts/main")
})
// Start server
log.Print(app.Listen(":3000"))
}
我的文件结构在哪里:(其中 a -> 表示它是一个目录)
-> views
-> layouts
main.css
main.html
index.html
main.go
main.html 的内容是:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="static/layouts/main.css">
<title>Hello, world!</title>
</head>
<body>
{{embed}}
</body>
</html>
文件 ./views 肯定存在,因为当我将它添加到 main 时,没有任何内容被打印到日志中:
if _, err := os.Stat("./views"); os.IsNotExist(err) {
log.Print("Path doesn't exist")
}
当我在 localhost 上运行它并使用检查元素查看网络时, http: //127.0.0.1 :3000/static/layouts/main.css被正确查询但抛出 404 错误。如果我去http://127.0.0.1:3000/static我会收到一条消息说Cannot GET /static
。我认为这可能是文件路径问题,但我尝试了许多不同的 .s、/s 等组合,但一无所获。
如何解决这个 404 错误?