GET 404 Not Found при загрузке таблицы стилей

У меня проблемы со статическим файловым сервером 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"))

}

Где моя файловая структура: (где -> означает, что это каталог)

-> 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 и использую элемент inspect, чтобы увидеть сеть, http://127.0.0.1:3000/static/layouts/main.css запрашивается правильно, но выдается ошибка 404. Если я перейду на http://127.0.0.1:3000/static, я получаю сообщение Cannot GET /static. Я думаю, что это может быть проблема с путем к файлу, но я пробовал много разных комбинаций.s, / s и т.д. и ничего не добился.

Как я могу решить эту ошибку 404?

1 ответ

Нашел исправление. Когда я переместил таблицы стилей в отдельную папку, CSS работал нормально.

Таким образом, моя файловая структура теперь такова:


-> styles
    main.css
-> views
    -> layouts
        main.html
    index.html
main.go

И в func main(), Статический сервер теперь app.Static("/static", "./styles"). Больше ничего не изменилось.

Другие вопросы по тегам