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 not found 错误。
我在这里做错了什么?
解决方案
问题在于您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"
作文件路径,但我建议使用绝对路径以避免任何混淆。
推荐阅读
- c# - 添加新的 Worksheet c#(疑问)
- firebase - 如何处理firestore上的空字段?
- javascript - 在雪花的 javascript 过程中传递值
- r - 在R中的数据框的n列中拆分字符串
- spring - Spring data jpa嵌套对象如何定义复杂查询Repository
- mysql - 这是我如何选择具有两个 WHERE 条件的所有员工的方式吗?
- html - 在 R Shiny App 中显示带有工作子链接的 HTML 文件
- swift - SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?
- vhdl - VHDL 中的函数
- python - 递归观察者看不到所有目录