首页 > 解决方案 > 我的静态文件没有正确呈现

问题描述

在我的 html 页面中,我引用了静态资产,例如:

 <script src="/static/assets/js/bundle.js"></script>

   <link rel="stylesheet" href="/static/assets/css/style.css">

这些文件存储在:

/assets/js/bundle.js
/assets/css/style.css

目前我的路线如下所示:

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

目前,当我查看 chrome 控制台时,它无法正常工作并返回 404 not found 错误。

我在这里做错了什么?

标签: go

解决方案


问题在于您http.Dir("/assets")在此行中的调用:

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

http.Dir以绝对形式或相对于 go 可执行文件所在位置获取文件夹的路径。使用"/assets"告诉它资产文件夹的绝对路径位于文件系统的根目录上,实际上我猜资产文件夹位于类似/home/YOUR_USER_FOLDER/code/this_project/assets.

只需更改代码以使用绝对路径:

app.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("/home/YOUR_USER_FOLDER/code/this_project/assets"))))

如果该assets文件夹与 go 可执行文件位于同一位置,则可以仅用"assets"作文件路径,但我建议使用绝对路径以避免任何混淆。


推荐阅读