在我的 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 未找到错误。
我在这里做错了什么?
问题在于您调用此行中的http.Dir("/assets")
:
app.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("/assets"))))
http.Dir
以绝对形式或相对于 go 可执行文件所在的位置获取文件夹的路径。使用"/assets"
告诉它 assets 文件夹的绝对路径位于文件系统的根目录上,实际上我猜 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"
作为文件路径,但我建议使用绝对路径以避免任何混淆。