我的静态文件没有正确呈现

时间:2018-05-06 22:46:15

标签: go

在我的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未找到的错误。

我在这里做错了什么?

1 个答案:

答案 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"作为文件路径,但我建议使用绝对路径以避免混淆。