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.
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
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") }
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" />
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.
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"))))
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!