4

我已经验证的事情:

  • 我的collectstatic目录(是的,我这样称呼它,以减少与static源目录的混淆)在我的仓库中(通过.gitkeep文件)(如heroku 文档中所述)
  • heroku run python manage.py collectstatic --dry-run --noinput作品(这里建议)
  • collectstatic没有被强制禁用:heroku config:add DISABLE_COLLECTSTATIC=0
  • 我正在推动一个新的提交(所以 heroku 实际上正在部署)

仍然,collectstatic没有运行。我还能检查什么?

编辑

另外,我STATIC_ROOTsettings.py. 下面的相关部分:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic/')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

编辑2

我安装的应用程序只是股票 django 1.9:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

编辑3

我必须提到的一件事,这可能是相关的:DISABLE_COLLECTSTATIC之前为这个 Heroku 应用程序设置为 1(因此被强制禁用),但我已确保它现在设置为 0。

也许 Heroku 中的错误阻止它使用最新值?我想检查这一点的唯一方法是创建一个新的 heroku 应用程序。

4

1 回答 1

0

所以,不知道发生了什么,但是创建一个新的 Heroku 实例并使用空配置推送它实际上触发了 collectstatic。

我怀疑 Heroku 没有正确评估对DISABLE_COLLECTSTATIC.

编辑

实际上,它似乎DISABLE_COLLECTSTATIC=0 阻止collectstatic了运行。要确保 collectstatic 运行,请执行以下操作:

heroku config:unset DISABLE_COLLECTSTATIC

我会说Heroku 文档有点令人困惑,因为它似乎暗示这DISABLE_COLLECTSTATIC=0实际上会运行 collectstatic - 但事实并非如此。

于 2016-01-07T10:26:54.277 回答