You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:43:27