【问题标题】:Yuglify compressor can't find binary from package installed through npmYuglify 压缩器无法从通过 npm 安装的包中找到二进制文件
【发布时间】:2013-01-12 03:23:24
【问题描述】:

我有一个全新的 virtualenv 环境,并且有最新的 django-pipleline。

使用 Closure 的 JS 压缩工作完美,但使用 Yuglify 的 CSS 压缩失败,由于节点错误:

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.closure.ClosureCompressor'
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.yuglify.YuglifyCompressor'

当我尝试收集静电时:

./manage.py collectstatic

上面写着:

pipeline.compressors.CompressorError: /usr/bin/env: node: No such file or directory

但我已经清楚地将 yuglify 安装为全局:

sudo npm -g install yuglify

/usr/local/bin/yuglify -> /usr/local/lib/node_modules/yuglify/bin/yuglify
yuglify@0.1.2 /usr/local/lib/node_modules/yuglify 
├── uglify-js@1.3.4
├── ycssmin@1.0.1
└── nopt@2.1.1

尝试在设置中设置 biney 也无济于事:

PIPELINE_YUGLIFY_BINARY = '/usr/local/bin/yuglify'

我仍然遇到同样的错误。为什么现在 npm 出现这样的问题?有什么我需要额外设置的吗?

或者有没有办法用 pip 安装 yuglify?

非常感谢,

【问题讨论】:

  • 你可以尝试运行这个:heroku run /usr/bin/env node
  • 感谢您的回复。我终于找到了。这是npm 以及它如何安装 yuglify 包的问题。它不漂亮。你最好在文档中提到这一点。 ;) 看我的回答。
  • 当我运行 heroku run /usr/bin/env node 时,它​​会启动节点终端。我如何解决它?如何在 heroku 上运行 Hooman 的解决方案?

标签: django npm django-pipeline yuglify


【解决方案1】:

经过3个小时的磨难,我找到了解决办法。

发生这种情况是因为命名错误,如果您从包管理器 (npm) 安装,您的 bin 可能被称为 nodejs,因此您只需像这样对其进行符号链接:

ln -s /usr/bin/nodejs /usr/bin/node

现在它正在工作。旧版本没有发生这种情况,它是新的。但至少它又开始工作了。我希望这对其他人有帮助。 :)

【讨论】:

  • 另外对我来说,which node 指向的是/usr/sbin/node,而不是上面软链接中的/usr/bin/node。删除 sbin 版本的节点使 yuglify 压缩器重新上线。
  • 另请注意,您必须使用上面指定的-g 安装yugliy - sudo npm -g install yuglify。没有这个,二进制文件将不会链接到/bin
【解决方案2】:

在我的情况下,uglify-jscssmin 都没有安装。

所以我使用以下命令重新安装了它们,然后它又开始工作了。

sudo npm install -g cssmin uglify-js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多