FastAPI部署至Vercel后无法启动,本地运行正常求排查
部署FastAPI到Vercel失败的问题排查与解决
核心问题分析
你的FastAPI本地运行正常,但Vercel部署后出现404、端口无响应的问题,根源在于Vercel配置文件错误和对Vercel Python运行时逻辑的理解偏差,具体问题如下:
1. vercel.json 配置冲突
- Builds 配置错误:你指定
src: "main.py",但main.py是本地启动uvicorn的脚本,Vercel的@vercel/python运行时需要直接指向包含ASGI应用实例的文件(即app/api.py),而非启动脚本。 - Routes 配置错误:
dest指向app/api.py,但该路径未关联builds生成的服务入口,路由规则未正确绑定到FastAPI的ASGI服务。
2. 不必要的本地启动脚本
main.py是本地开发时启动uvicorn的文件,Vercel环境中完全不需要——Vercel会自动基于ASGI应用实例托管服务,无需手动调用uvicorn.run。
修正方案
1. 修正 vercel.json
调整配置,直接指向FastAPI的ASGI应用入口,让Vercel正确识别并托管服务:
{ "version": 2, "builds": [ { "src": "app/api.py", "use": "@vercel/python", "config": { "runtime": "python3.11" // 可指定与本地匹配的Python版本 } } ], "routes": [ { "src": "/(.*)", "dest": "app/api.py" } ] }
2. 处理 main.py(可选)
由于Vercel不需要这个启动脚本,你可以:
- 直接删除
main.py,或 - 在项目根目录创建
.vercelignore文件,加入main.py,避免部署时上传不必要的文件。
3. 确认依赖配置
确保requirements.txt包含FastAPI和uvicorn:
fastapi>=0.100.0 uvicorn>=0.23.2
验证部署
修正后重新部署:
- 构建日志会显示识别到Python服务,而非生成静态页面
- 访问部署域名,根路径
/会返回{"message": "Welcome to this fantastic app!"} - 可通过Vercel控制台的「Functions」标签查看服务运行日志(不再是静态页面日志)
内容的提问来源于stack exchange,提问作者Dominic
相关产品推荐
相关产品推荐

