FastAPI部署Uvicorn时静态文件目录配置失败,index.html无法访问
解决FastAPI挂载静态HTML文件404的问题
核心问题排查与修复步骤
补全FastAPI实例创建
你的代码中缺少app = FastAPI()这一行,这是创建FastAPI应用的基础,没有它所有路由和挂载操作都无法生效。修正静态文件路径(关键)
相对路径directory='static'依赖于你运行uvicorn命令的工作目录,很容易出错。改用绝对路径可以彻底解决这个问题:import os # 新增导入 # 在代码最开始创建app实例 app = FastAPI() # 获取当前脚本所在目录的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接static目录的绝对路径 static_dir = os.path.join(current_dir, "static") # 先挂载静态文件,再定义API路由 app.mount('/', StaticFiles(directory=static_dir, html=True), name="static")确认项目目录结构
确保你的项目结构符合以下规范(根目录为app):app/ ├── main.py # 你的代码文件 └── static/ └── index.html # 要访问的HTML文件检查文件名与大小写
- 确保HTML文件确实是
index.html(Linux/macOS系统大小写敏感,Index.html或INDEX.HTML都会导致404) - 确认
static目录下没有嵌套子目录,否则访问路径需要对应(比如static/html/index.html需要访问/html/index.html)
- 确保HTML文件确实是
额外注意事项
- 挂载顺序:建议先挂载静态文件,再定义API路由,避免路由匹配优先级冲突(比如如果有
@app.get('/')的路由,会优先于静态文件的index.html) - 你的
view_income函数中cursor未初始化,需要先建立PostgreSQL连接并创建游标,否则API会报错,但这和静态文件问题无关。
内容的提问来源于stack exchange,提问作者Shreadr
相关产品推荐
相关产品推荐

