Компрессор 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