2

尝试在部署时运行 collectstatic,但遇到以下错误:

pipeline.exceptions.CompressorError: /usr/bin/env: yuglify: 没有这样的文件或目录

当我手动运行 collectstatic 时,一切都按预期工作:

后处理 'stylesheets/omnibase-v1.css' 为 'stylesheets/omnibase-v1.css' 后处理 'js/omnijs-v1.js' 为 'js/omnijs-v1.js'

我已经在全球范围内安装了 Yuglify。如果我运行“heroku run yuglify”,界面会弹出并按预期运行。我只是遇到了部署问题。我正在使用带有 NodeJS 和 Python 的 multibuildpack。有什么帮助吗?

我的包裹,以防万一:

{
  "author": "One Who Sighs",
  "name": "sadasd",
  "description": "sadasd Dependencies",
  "version": "0.0.0",
  "homepage": "http://sxaxsaca.herokuapp.com/",
  "repository": {
    "url": "https://github.com/heroku/heroku-buildpack-nodejs"
  },
  "dependencies": {
    "yuglify": "~0.1.4"
  },
  "engines": {
    "node": "0.10.x"
  }
}

也许应该提到 Yuglify 不在我的 requirements.txt 中,只是在我的 package.json 中。

4

1 回答 1

3

我遇到了同样的问题,最终使用了这样的自定义构建包并编写了一个 bash 脚本来安装节点和 yuglify: https ://github.com/heroku/heroku-buildpack-python

设置好 buildpack 后,我创建了一些 bash 脚本来安装 node 和 yuglify。buildpack 具有调用这些后编译脚本的钩子。这是我遵循的如何执行此操作的一个很好的示例: https ://github.com/nigma/heroku-django-cookbook

这些脚本位于根文件夹中的 bin 下。

在 post_compile 脚本中,我添加了一个脚本来安装 yuglify。

post_compile 脚本

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


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

fi

install_yuglify 脚本

  #!/usr/bin/env bash
    set -eo pipefail

    npm install -g yuglify

如果这不起作用,你可以看看这篇文章: Yuglify 压缩器无法从通过 npm 安装的包中找到二进制文件

于 2014-08-28T20:40:19.723 回答