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

Flask应用部署到Heroku后访问报404错误,本地正常无法加载login.html

问题根因

你遇到的404错误核心是蓝图注册逻辑存在模块导入问题,gunicorn启动时路由未正常加载,另外还有几处隐含的部署适配错误,共同导致了线上异常:

  1. 同一文件内定义的蓝图不需要跨模块导入:你在app.py中直接定义了auth蓝图,却写了from app import auth as auth_blueprint来导入,gunicorn以模块形式导入app.py时,这行代码会触发循环导入或导入失败,最终蓝图未成功注册,/、/login路径完全没有对应的路由规则,自然返回404。
  2. 依赖清单缺失必要包:你的requirements.txt中没有加入用到的Flask-Login、Flask-User两个依赖,Heroku部署时不会自动安装,会导致应用启动异常。
  3. 缺少os模块导入:代码中用到了os.environ读取端口,但是开头没有导入os,线上启动会报错。
  4. 数据库连接地址写死:你硬编码了postgresql://myaddress,没有读取Heroku自动注入的DATABASE_URL环境变量,数据库连接会失败。

修复步骤

  • 修正蓝图注册逻辑:删除from app import auth as auth_blueprint这行,直接调用app.register_blueprint(auth)注册当前文件中定义的auth蓝图。
  • 补充依赖到requirements.txt,添加两行:
Flask-Login==0.5.0
Flask-User==1.0.2.2
  • 在app.py开头添加import os导入。
  • 修改数据库配置为读取环境变量:
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL')
  • 检查templates文件夹下的login.html文件名大小写和路径是否正确,Heroku的Linux文件系统大小写敏感,本地Windows/macOS大小写不敏感不会暴露该问题。

验证方式

修改完成后本地先使用gunicorn启动测试:gunicorn app:app,确认本地访问正常后再重新部署到Heroku即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:39:03