我的静态文件未正确撕裂

  • 本文关键字:撕裂 文件 静态 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 未找到错误。

我在这里做错了什么?

问题在于您调用此行中的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"作为文件路径,但我建议使用绝对路径以避免任何混淆。

最新更新