Go Echo框架Static函数使用问题:静态文件加载返回404求助
Echo框架静态文件404问题解决方案
问题根源
你的静态文件路径配置存在相对路径错误:pageRouter.go位于internal/pageRouter目录,使用e.Static("/css", "css")时,程序会尝试在internal/pageRouter/css目录下查找文件,但实际css文件夹在项目根目录repo下,导致找不到文件返回404。
解决方法
方法一:使用项目根目录的绝对路径(推荐)
通过代码动态获取项目根目录,确保静态文件路径始终正确,不受运行目录影响:
import ( "github.com/labstack/echo/v4" "os" "path/filepath" "net/http" ) func SetupRoutes(e *echo.Echo) { // 获取当前可执行文件路径,回溯到项目根目录 exePath, err := os.Executable() if err != nil { panic(err) } // 针对你的项目结构,向上回溯3层:exePath -> cmd/app -> cmd -> repo rootPath := filepath.Dir(filepath.Dir(filepath.Dir(exePath))) // 配置静态文件路由 e.StaticFS("/resources", http.Dir(filepath.Join(rootPath, "resources"))) e.StaticFS("/css", http.Dir(filepath.Join(rootPath, "css"))) e.StaticFS("/js", http.Dir(filepath.Join(rootPath, "js"))) }
方法二:固定运行时工作目录
在项目根目录repo下执行程序,确保相对路径指向正确的静态文件夹:
cd repo go run cmd/main.go
这种方式简单但依赖运行时的工作目录,打包部署时需要注意切换到项目根目录启动程序。
验证
配置完成后,重新启动服务,请求/css/index.css即可正确返回文件,日志不再出现404状态码。
内容的提问来源于stack exchange,提问作者Vlad Popescu
相关产品推荐
相关产品推荐

