我正在构建我的第一个Go Web项目,并且在加载页面时在浏览器控制台上收到此错误
Refused to apply style from 'http://localhost:8080/static/css/processor-auth.css' because its MIME type ('text/plain') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
我不确定自己在做什么错,因为我已经添加了此代码来加载静态文件
http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))
这是我的main.go文件的样子:
package main
import(
"net/http"
"os"
"html/template"
"github.com/julienschmidt/httprouter"
)
// Auth struct handler
type auth struct{}
func (auth *auth) ServeHTTP(w http.ResponseWriter, r *http.Request){
wd,_:= os.Getwd()
t := template.Must(template.ParseFiles(wd+"/templates/processor/auth.html"))
err:=t.Execute(w,nil)
if err !=nil{
http.Error(w,"Could not execute template",500)
}
}
func main(){
router:= httprouter.New()
// set the static files
http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))
router.Handler("GET","/auth",&auth{})
server := http.Server{
Addr:"127.0.0.1:8080",
Handler:router,
}
server.ListenAndServe()
}
编辑:解决了问题
由于我使用httprouter
作为多路复用器,所以无法使用
http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))
我必须更新到httprouter的ServeFiles函数,并将代码更新为
router.ServeFiles("/static/*filepath",http.Dir("static"))
答案 0 :(得分:0)
我正在使用Windows 10计算机,并且在javascript文件上遇到了相同的问题 我进入了注册表Computer \ HKEY_CLASSES_ROOT.js的“内容类型”,并将其从“文本/纯文本”更改为“应用程序/ javascript”,并进行了修复
答案 1 :(得分:0)
出现此错误是因为Go正在自动检测文件的内容类型。为了进行自动检测,它使用了一个映射,该映射指向文件扩展名(例如.js)-> MIME类型(例如文本/纯文本)。要获取此映射,它将从本地计算机读取它。因此,如果您的本地计算机在其.css文件的注册表中(或与您的操作系统等效的)注册表中的值不正确,并且您使用的代码会自动检测所提供文件的MIME类型,那么就会发生这种情况。
重新安装或卸载Visual Studio时遇到错误的注册表值。
HKEY_CLASSES_ROOT包含一个列表。就我而言,我在该列表中查找了.js并将其值从text / plain更改为application / javascript。在原始海报的位置,该错误看起来像是.css中的错误,因此您需要将HKEY_CLASSES_ROOT \ .css键“内容类型”设置为text / css。
HKEY_LOCAL_MACHINE \ SOFTWARE \ CLASSES也包含一个列表。您应该以相同的方式更新它,使其与HKEY_CLASSES_ROOT匹配。就我而言,这已经正确设置为application / javascript,因此我认为它不是Go正在读取的第一个注册表值。