Heroku部署Review App时忽略app.json中addons配置的问题求助
核心问题分析
你遇到的情况是:Review App仅自动创建了heroku-postgresql和autoidle,但未加载顶层配置里的papertrail和heroku-redis;同时即使移除顶层的postgres配置,它仍会被自动添加。这主要和Heroku Review App的addon继承规则、自动依赖检测以及addon配置格式有关。
解决建议
显式在Review环境配置中声明所有需要的Addons
Heroku Review App的顶层addons并非完全默认继承到review环境,尤其是当你在environments.review里单独配置了addons时,需要把所有需要的addons都列进去,而不是只加autoidle:hobby。示例配置:{ "addons": [ "heroku-postgresql:14", "heroku-redis:hobby-dev", "papertrail:choklad" ], "environments": { "review": { "addons": [ "autoidle:hobby", "heroku-postgresql:14", "heroku-redis:hobby-dev", "papertrail:choklad" ] } } }注意:必须指定addon的具体计划层级(比如
heroku-redis:hobby-dev而非只写heroku-redis),Heroku无法自动推断免费/基础计划。检查Addon计划的合法性
确认你使用的addon计划存在且对Review App可用:papertrail的免费计划是choklad,不要只写papertrailheroku-redis的免费基础计划是hobby-dev,需明确指定
查看Review App部署日志定位错误
进入Heroku Dashboard找到对应的Review App,查看部署日志,里面会记录addon创建失败的具体原因(比如权限不足、计划不存在、账户额度限制等),这是最直接的排查手段。处理postgres自动添加的问题
Heroku会自动检测项目中的数据库依赖(比如package.json里的pg、requirements.txt里的psycopg2),自动添加postgres addon。如果想禁用这个行为,可以在app.json的review环境中添加:"environments": { "review": { "env": { "DISABLE_DATABASE_ENVIRONMENT_CHECK": "1" }, "addons": [ // 只加你需要的addons,不包含heroku-postgresql ] } }不过如果你的项目确实需要postgres,建议保留显式配置,避免自动添加的版本不符合需求。
验证app.json的语法正确性
使用Heroku CLI命令heroku apps:validate -f app.json检查配置文件是否有语法错误,格式错误可能导致部分addon配置被忽略。
内容的提问来源于stack exchange,提问作者Azelphur

