部署至Heroku的博客应用文章无法显示,寻求技术解决方案
我来帮你排查下这个问题,这种本地正常但Heroku部署后出问题的情况,大概率是环境配置或者部署步骤遗漏导致的,给你列几个常见的排查方向:
环境变量配置缺失
本地开发时你可能靠.env文件配置了数据库连接、API密钥这类关键变量,但Heroku不会自动读取本地的.env。你可以打开终端运行heroku config查看当前Heroku上的环境变量列表,要是发现缺失必要的项(比如数据库连接字符串DATABASE_URL),就用heroku config:set KEY=VALUE命令补上,比如heroku config:set DATABASE_URL=postgres://xxx。数据库迁移未执行
本地你肯定跑过迁移命令来创建数据库表(比如Rails的rails db:migrate、Django的python manage.py migrate),但Heroku部署后不会自动帮你执行迁移。登录Heroku CLI,运行heroku run <你的迁移命令>,比如Rails项目就输heroku run rails db:migrate,执行完记得重启应用:heroku restart,不然新的表结构不会生效。静态资源未正确部署
如果你的文章包含图片、自定义样式这类静态资源,Heroku上可能没正确处理它们。比如Rails项目要确保生产环境配置里config.public_file_server.enabled = true,还要运行heroku run rails assets:precompile预编译静态资源;要是是Node.js项目,检查package.json里的build命令是否能正确生成静态文件,Heroku的buildpack有没有自动执行这个命令。生产数据库无数据
本地数据库里有你测试的文章,但Heroku的生产数据库是全新的空库,自然没东西显示。你可以把本地的数据导出后导入到Heroku:比如用PostgreSQL的话,本地执行pg_dump -d 你的本地数据库名 > dump.sql,然后用heroku pg:psql < dump.sql把数据导入Heroku数据库;或者如果有种子数据文件,直接运行heroku run rails db:seed(Rails)或者对应框架的种子命令来生成测试文章。查看Heroku日志找具体错误
要是上面的方法都没解决,直接看日志找根源!运行heroku logs --tail就能实时查看应用的运行日志,里面会明确显示文章加载失败的原因——比如数据库连接错误、权限不足、查询语句报错等等,根据报错信息针对性修复就好。
内容的提问来源于stack exchange,提问作者Ogunmola Israel

