Компрессор Yuglify не может найти двоичный файл из пакета, установленного через npm

У меня свежая среда virtualenv, и у меня есть новейшая версия django-pipleline.

Сжатие JS с Closure работает отлично, но сжатие CSS с Yuglify завершается неудачей из-за ошибки узла:

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? Есть ли что-то, что я должен настроить дополнительно?

В качестве альтернативы есть ли способ установить yuglify с помощью pip?

Большое спасибо,

1 ответ

Решение

После 3 часов страданий я нашел решение.

Это происходит из-за ошибки неправильного именования. Если вы устанавливаете из менеджера пакетов (npm), ваш бен может называться nodejs, поэтому вам просто нужно сделать символическую ссылку так:

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

Теперь это работает. Это не случилось со старой версией, это что-то новое. Но, по крайней мере, это снова работает. Я надеюсь, что это помогает кому-то еще там.:)

В моем случае оба uglify-js и cssmin были как-то не установлены.

Поэтому я переустановил их снова, используя следующую команду, и затем она снова начинает работать.

sudo npm install -g cssmin uglify-js
Другие вопросы по тегам