Maison > développement back-end > Golang > le corps du texte

Problème de service de fichiers JavaScript et d'actifs à l'aide de Gorilla Mux dans Golang

王林
Libérer: 2024-02-09 16:12:09
avant
927 Les gens l'ont consulté

在 Golang 中使用 Gorilla Mux 提供 JavaScript 和资产文件时遇到问题

Les problèmes de service de JavaScript et des fichiers d'actifs à l'aide de Gorilla Mux dans Golang sont une situation que de nombreux développeurs peuvent souvent rencontrer lors de l'utilisation de cette bibliothèque. Gorilla Mux est une bibliothèque de routage populaire, mais vous pouvez rencontrer quelques difficultés lorsque vous utilisez des ressources statiques. L'éditeur PHP Xiaoxin vous présentera quelques problèmes et solutions courants dans cet article pour vous aider à mieux utiliser Gorilla Mux pour fournir du JavaScript et des fichiers d'actifs dans les projets Golang.

Contenu de la question

J'ai un système de fichiers comme celui-ci :

-- api
     -> api.go
  -- styles
    -> style1.css
    -> style2.css
    -> ...
  -- scripts
    -> script1.js
    -> script2.js
    -> ...
  -- static
    -> page1.html
    -> page2.html
    -> ...
  -- assets
    -> image1.png
    -> image2.png
    -> ...
  -- main.go
Copier après la connexion

Dans le fichier api.go, j'ai configuré mon serveur Gorilla mux comme ceci (Obtention du code de ce Golang Gorilla mux, http.FileServer renvoie 404) :

func (api *APIServer) Run() {
    router := mux.NewRouter()


    router.PathPrefix("/styles/").Handler(http.StripPrefix("/styles/",
        http.FileServer(http.Dir("styles"))))

    router.PathPrefix("/").Handler(http.StripPrefix("/",
        http.FileServer(http.Dir("static"))))

    router.PathPrefix("/scripts/").Handler(http.StripPrefix("/scripts/",
        http.FileServer(http.Dir("scripts"))))

    router.PathPrefix("/assets/").Handler(http.StripPrefix("/assets/",
        http.FileServer(http.Dir("assets"))))


    if err := http.ListenAndServe(api.listenAddr, router); err != nil {
        log.Printf("error starting server %s", err.Error())
    }
    fmt.Println("server start running")
}
Copier après la connexion

fichier html :

<link rel="stylesheet" type="text/css" href="styles\login.css" />
<script src="scripts\login.js"></script>
<img
    id="img-show"
    src="assets\bin.png"
    alt=""
    width="25px"
/>
Copier après la connexion

Le navigateur ne peut voir que le HTML (statique) et le CSS (styles), mais pas les scripts et les ressources, malgré le fait que tout est identique aux deux premiers. Erreur :

(Golang Gorilla mux avec http.FileServer renvoie 404) Ces deux options n'aident que pour les fichiers html et css, la modification du chemin n'a également donné aucun résultat.

Solution de contournement

Votre problème est causé par le gestionnaire "/", qui correspond à "/assets" et "/scripts" et est déclaré avant ces routes. Voir icicomment gorilla/mux correspond aux itinéraires

Si vous réorganisez l'ordre des itinéraires, ce problème disparaîtra :

router.PathPrefix("/styles/").Handler(http.StripPrefix("/styles/",
        http.FileServer(http.Dir("styles"))))

    router.PathPrefix("/scripts/").Handler(http.StripPrefix("/scripts/",
        http.FileServer(http.Dir("scripts"))))

    router.PathPrefix("/assets/").Handler(http.StripPrefix("/assets/",
        http.FileServer(http.Dir("assets"))))

    router.PathPrefix("/").Handler(http.StripPrefix("/",
        http.FileServer(http.Dir("static"))))
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal