由于静态文件收集原因,Heroku 拒绝推送

Posted

技术标签:

【中文标题】由于静态文件收集原因,Heroku 拒绝推送【英文标题】:Push rejected by Heroku for the static file collection reason 【发布时间】:2018-10-26 13:02:10 【问题描述】:

当我尝试将 Django 应用程序部署到 Heroku 时,遇到与 python - Collectstatic error while deploying Django app to Heroku - Stack Overflow 相同的问题 它开始构建、下载和安装所有内容,但这就是我在收集静态文件时得到的:

$ git push heroku master
Counting objects: 5375, done.
Total 5375 (delta 1092), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing requirements with pip
remote: 
...
remote: 
remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
remote:        See traceback above for details.
remote: 
remote:        You may need to update application code to resolve this error.
remote:        Or, you can disable collectstatic for this application:
remote: 
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote: 
remote:        https://devcenter.heroku.com/articles/django-assets
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy....
remote: 
remote: !   Push rejected to fierce-cove-94300.
remote: 
To https://git.heroku.com/fierce-cove-94300.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/fierce-cove-94300.git'

我尝试了所有答案,但没有帮助。 另外我尝试Django and Static Assets | Heroku Dev Center 配置设置并安装whitenoise 并提交更改。

问题没有解决。

【问题讨论】:

【参考方案1】:

禁用自动收集静态:

heroku config:set DISABLE_COLLECTSTATIC=1

然后将您的项目推送到heroku。部署完成后,手动收集静态如下:

heroku run python manage.py collectstatic

如果你仍然得到错误,你的静态文件配置可能是原因。尝试让它变得简单,例如去除白噪声并使用 s3 存储桶。

【讨论】:

以上是关于由于静态文件收集原因,Heroku 拒绝推送的主要内容,如果未能解决你的问题,请参考以下文章

Heroku/Django 部署:为啥我在成功部署和静态收集时收到错误 500?

找不到静态文件 - 在 Heroku 上部署 Django

Django heroku 静态目录

在 Heroku 上部署 Django/静态文件的正确方法

Heroku 不会在 Django 上收集静态数据,但告诉它确实如此

由于静态错误,无法在 Heroku 上部署 Django [重复]