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

Golang http.FileServer访问文件返回404 Not Found问题求助

解决Go http.FileServer访问具体文件404的问题

问题诊断

目录列表能正常加载但具体文件返回404,核心原因大概率是相对路径依赖的工作目录不匹配,或是文件路径解析出现偏差。

解决方案

1. 改用绝对路径(推荐方案)

相对路径./web/js依赖程序运行时的当前工作目录,一旦启动程序的目录不是项目根目录,就会找不到目标文件。可以通过filepath.Abs获取绝对路径彻底规避这个问题:

import "path/filepath"
import "log"

// 获取web/js目录的绝对路径,避免相对路径陷阱
root, err := filepath.Abs("./web/js")
if err != nil {
    log.Fatal(err)
}
fs := http.FileServer(http.Dir(root))
http.Handle("/js/", http.StripPrefix("/js/", fs))

2. 确认程序运行的工作目录

如果坚持使用相对路径,必须保证启动程序时的工作目录是包含web/js的项目根目录。比如你的项目结构是:

your-project/
├── main.go
└── web/
    └── js/
        └── test.js

就要在your-project/目录下执行go run main.go,不能在子目录中启动程序。

3. 检查文件状态与权限

  • 确认web/js/test.js真实存在,路径拼写无错误(注意Linux/macOS系统区分文件名大小写)
  • 确保程序对该文件拥有可读权限,Linux环境可执行chmod +r web/js/test.js调整权限

验证修复

修改代码后重启服务,执行以下命令测试:

curl http://localhost:8100/js/test.js

若返回文件内容,说明问题已解决。

内容的提问来源于stack exchange,提问作者Luminance

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:22:41