在我的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未找到的错误。
我在这里做错了什么?
答案 0 :(得分:2)
问题在于您在此行中致电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"
作为文件路径,但我建议使用绝对路径以避免混淆。