【问题标题】:Django on Heroku, issue with Yuglify and CollectStaticHeroku 上的 Django,Yuglify 和 CollectStatic 的问题
【发布时间】:2026-01-19 07:45:02
【问题描述】:

我正在使用 Django-Pipeline 来缩小我的 javascript。当我将我的项目推送到 Heroku 并运行 CollectStatic 时,它给了我错误

pipeline.exceptions.CompressorError: /usr/bin/env: yuglify: No such file or directory

但是当我手动运行 CollectStatic 时,Yuglify 运行没有问题。我无法找出问题所在。在这种情况下,我什至应该向你们展示什么代码?

【问题讨论】:

    标签: python django heroku django-pipeline yuglify


    【解决方案1】:

    我对此的解决方案是在此处的代码库中添加“yuglify”部分:https://github.com/nigma/heroku-django-cookbook

    这是我的代码:

    bin/install_yuglify

    #!/usr/bin/env bash
    set -eo pipefail
    npm install -g yuglify
    

    然后将以下内容添加到 bin/post_compile(大约第 23 行...)

    if [ -f bin/install_yuglify ]; then
        echo "-----> Running install_yuglify"
        chmod +x bin/install_yuglify
        bin/install_yuglify
    fi
    

    你应该很高兴:)

    您可以在这里查看我的代码,供参考:https://github.com/GK-12/rpi_csdt_community/tree/master/bin

    祝你好运!

    【讨论】:

      【解决方案2】:

      我设法用一个不那么痛苦的解决方案解决了这个问题。 Heroku 为您提供构建包,这实际上是您的应用程序将要构建的环境。默认情况下,您有 python buildpack。这就是系统能够运行诸如 python manage.py.... 之类的命令的原因。我的解决方案如下: 1) 安装 nodejs buildpack 作为第一个 buildpack

      heroku buildpacks:add --index 1 heroku/nodejs
      

      2) 将 package.json 添加到与 requirements.txt 相同的路径中 3)在package.json中添加yuglify的依赖

      另一种解决方案是更改压缩并使用 python 编写的。

      PIPELINE['CSS_COMPRESSOR']  = 'pipeline.compressors.cssmin.CSSMinCompressor'
      PIPELINE['JS_COMPRESSOR'] = 'pipeline.compressors.jsmin.JSMinCompressor'
      

      pip install cssmin jsmin

      我没有明确的意见,哪个更好 jsmin 或 yuglify。

      【讨论】: