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

部署React+FastAPI应用至Heroku时遭遇uvicorn命令未找到错误

部署React+FastAPI前后端分离应用到Heroku时uvicorn命令找不到的问题

错误日志

2024-02-27T15:49:03.606270+00:00 heroku[web.2]: Starting process with command `uvicorn main:app --host=0.0.0.0 --port=${PORT:-5000}`
2024-02-27T15:49:05.246060+00:00 app[web.2]: /bin/bash: line 1: uvicorn: command not found
2024-02-27T15:49:05.330951+00:00 heroku[web.2]: Process exited with status 127
2024-02-27T15:49:05.374072+00:00 heroku[web.2]: State changed from starting to crashed

相关配置文件

Procfile

web: uvicorn main:app --host=0.0.0.0 --port=${PORT:-5000}

main.py核心代码

import os
from typing import List, Optional 
from fastapi import FastAPI, Request 
from fastapi.responses import StreamingResponse
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import openai
from openai import OpenAIError
from dotenv import load_dotenv

load_dotenv()

app = FastAPI()

app.add_middleware(
   CORSMiddleware,
   allow_origins=["*"],
   allow_credentials=True,
   allow_methods=["*"],
   allow_headers=["*"],
)

... 其他代码 ...  
   
if __name__ == '__main__':
   import uvicorn
   uvicorn.run(app, host='0.0.0.0', port=5000)

requirements.txt

openai==1.10.0
fastapi==0.104.1
pydantic==2.4.2
pydantic_core==2.10.1
typing_extensions==4.5.0
python-dotenv==1.0.0
requests==2.30.0
urllib3==2.0.2
uvicorn==0.23.2
yarl==1.9.2
Werkzeug==2.0.1
gunicorn==21.2.0

问题背景

本地运行正常,部署到Heroku时仅安装了React依赖,未安装Python依赖,出现uvicorn命令找不到的错误。


解决建议

  • 确保Heroku识别Python环境
    Heroku通过根目录下的requirements.txt和Procfile判定Python应用身份。如果之前仅部署前端,需重新提交包含这两个文件的完整代码到Git仓库,触发Heroku的Python依赖安装流程。

  • 改用Python模块方式启动uvicorn
    修改Procfile,通过Python模块调用uvicorn,避免环境路径问题:

    web: python -m uvicorn main:app --host=0.0.0.0 --port=${PORT:-5000}
    
  • 检查部署流程与构建包

    1. 确认requirements.txt未被.gitignore忽略,已提交至Git。
    2. 查看Heroku部署日志,确认是否存在Installing dependencies from requirements.txt步骤。若没有,需添加Python和Node.js构建包:
      heroku buildpacks:add heroku/python
      heroku buildpacks:add heroku/nodejs
      
      可通过heroku buildpacks命令查看已安装的构建包。
    3. 前后端同仓部署时,在前端package.json中添加heroku-postbuild脚本处理前端构建:
      "scripts": {
        "build": "react-scripts build",
        "heroku-postbuild": "npm install && npm run build"
      }
      
  • 切换为gunicorn管理进程
    生产环境推荐用gunicorn搭配uvicorn worker,稳定性更高,也能规避命令路径问题,修改Procfile为:

    web: gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind=0.0.0.0:${PORT:-5000}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:48