Специализни шаблонца! (udpn) wrote,
Специализни шаблонца!
udpn

Category:

Как заставить node-gyp таки работать

Node.js использует для модулей, написанных на С++, ублюдочный пакет под названием node-gyp. Ублюдочный он потому, что авторам глубоко посрать на все операционные системы, кроме их любимой убунты.

Ни разу не видел, чтобы node-gyp заработал под виндой с первого раза. Три самых частых его бага:

1. Переменной окружения PYTHON не должно быть. Она по дефолту ссылается папку с Python, node-gyp от этой наглости входит в ступор и вылетает. Зачем ему питон, спросите вы? Да потому что ублюдок джаваскрипта и С++ просто обязан внутри использовать скрипты на тормозном питоне. (Посмотрите, например, на билд-скрипты Google Closure.)
Проверка: %PYTHON% в cmd должен говорить, что такой переменной нет.
Как исправить: set PYTHON= (и ничего после знака равно) перед тем, как вы будете делать npm install <пакет>.

2. Если у вас, не дай боже, что-то кроме iso-8859-1 в имени пользователя, то node-gyp работать не может, потому что они не умеют работать с юникодом. Переименовать пользователя будет недостаточно, потому что папка пользователя, в которой Node.js хранит настройки, будет называться всё так же. Создайте нового пользователя, убедитесь, что ваше VPN-подключение к Интернет расшарено на всех пользователей, и делайте действия оттуда. Ну или подправьте имя папки в реестре и на диске руками, на свой страх и риск.

3. Если у вас стояло много версий Visual Studio, и зачем-то одну из них удалили, то есть шанс, что node-gyp попытается откомпилировать именно ей. Подотрите остатки от студии и удалите соответствующую переменную окружения VSxxCOMNTOOLS.

Если всё это не помогло, то вы внимательно читаете логи, смотрите, какой конкретно пакет node-gyp не сумел скомпилировать, качаете его исходники в отдельную папочку npm'ом, правите, делаете npm link из этой папки. Теперь возвращаетесь на то место, где должен быть этот пакет в устанавливаемом, делаете оттуда npm link <имя пакета>, и всё!

И да, если ваc это достало так же, как и меня, напишите этим дебилам, что они дебилы.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 15 comments