Heroku推送报错 Firefox应用编译失败导致推送被拒如何解决
问题根因
报错核心原因是你配置了两个功能完全重叠的Firefox相关构建包:
- 你添加的集成Firefox+Geckodriver构建包本身已经内置了匹配版本的Firefox浏览器与驱动,构建阶段会自动将Firefox二进制文件部署到指定目录
- 你额外添加的独立Firefox构建包会重复执行Firefox下载、解压、部署到同一路径的操作,两个构建包顺序执行时,后执行的独立Firefox构建包尝试移动文件到目标目录时,发现目录已经被前一个构建包写入了内容,触发
Directory not empty错误,直接导致构建被拒绝。
修复操作步骤
- 删除冗余的独立Firefox构建包,执行命令:
heroku buildpacks:remove buitron/firefox-buildpack -a hydrogen-gas
- 校验构建包顺序,执行
heroku buildpacks -a hydrogen-gas查看已配置的构建包列表,需要保证顺序为:- 第一位:官方Python构建包
- 第二位:集成Firefox+Geckodriver构建包
如果顺序不符合要求,执行heroku buildpacks:add --index 目标序号 对应构建包名称调整即可。
- 清除历史构建缓存,避免残留旧文件干扰新的构建流程:
heroku plugins:install heroku-builds heroku builds:cache:purge -a hydrogen-gas
- 重新执行推送命令完成部署:
git push heroku master
补充说明
部署完成后代码里初始化Selenium的Firefox驱动时,不需要手动指定Firefox二进制文件或者geckodriver的路径,集成构建包会自动将相关路径写入Heroku环境变量,Selenium可以直接识别调用。
内容的提问来源于stack exchange,提问作者Emi Buliga
相关产品推荐
相关产品推荐

