Обслуживание файлов с использованием net / http FileServer приводит к 404 - PullRequest
0 голосов
/ 18 января 2019

Я делаю небольшой автономный сервис на Go. Для пользовательского интерфейса требуется несколько библиотек JS, поэтому я решил, что для обслуживания файлов JS из node_modules

я бы использовал http.FileServer
router := chi.NewRouter()
router.Use(middleware.RequestID)
router.Use(middleware.RealIP)
router.Use(middleware.Logger)
router.Use(middleware.Recoverer)
router.Use(middleware.Timeout(60 * time.Second))

router.Get("/", func(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "index.html")
})
router.Get("/node_modules/", func(w http.ResponseWriter, r *http.Request) {
    http.StripPrefix("/node_modules/", http.FileServer(http.Dir("node_modules")))
})
... more routes added here for the API ...

listen = ":8080"
log.Infof("listening on %s", listen)
http.ListenAndServe(listen, router)

Когда я пытаюсь сделать

<script src="node_modules/jquery/dist/jquery.min.js"></script>

В моем пользовательском интерфейсе я получаю 404. Каталог node_modules находится там, и файл существует. Что я делаю не так?

1 Ответ

0 голосов
/ 18 января 2019

решаемая. В шаблоне не было подстановочного знака "/ node_modules / *" работает. Кроме того, по какой-то причине упаковка Handler в HandlerFunc не сработала (вернул 000 статус и никакого содержимого). Таким образом, полученный маршрут выглядит следующим образом

router.Handle(
    "/node_modules/*",
    http.StripPrefix("/node_modules/", http.FileServer(http.Dir("node_modules"))),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...