使用Chi路由的Golang静态文件服务报错:无法访问public目录文件
解决Chi路由下静态文件404问题
修复监听地址不匹配的bug
你代码中读取了LISTEN_ADDR环境变量,但启动服务时却硬编码使用:3000,如果环境变量设置了其他端口,访问该端口自然会返回404。修改代码如下:http.ListenAndServe(listenAddr, router)确保静态文件路径正确
http.Dir("./public/")使用相对路径,要求程序必须在包含public文件夹的目录下运行。如果不确定工作目录,改用绝对路径更可靠:// 需要先导入 "path/filepath" 包 exeDir, err := os.Executable() if err != nil { log.Fatal(err) } exeDir = filepath.Dir(exeDir) publicDir := filepath.Join(exeDir, "public") fileServer := http.FileServer(http.Dir(publicDir))验证访问路径格式
按照当前路由配置,访问静态文件的URL必须以/public/开头,比如public目录下的style.css,要访问http://<你的服务地址>/public/style.css。如果想直接通过根路径访问静态文件(如http://<你的服务地址>/style.css),可以调整路由(注意要放在API路由之后):router.Handle("/*", http.StripPrefix("/", fileServer))
内容的提问来源于stack exchange,提问作者Ádám Hassan
相关产品推荐
相关产品推荐

