Установка node-gyp на Windows 8

Для работы некоторых модулей Node.js (например, MongoDB, Sails.js, Deployd) нужна компиляция нативного кода, написанного на C++. Это возможно с помощью модуля node-gyp, который, в свою очередь, собирает V8 используя питоновский gyp. Поэтому настроить node-gyp на Windows не просто, хотя на Ubuntu Linux у меня проблем с этим не возникало. В этом посте я поделюсь своим опытом исправления ошибок, которые возникали у меня при установке node-gyp на Windows, и опишу последовательность действий, которая позволила мне заставить сборку работать.

Для установки node-gyp необходимы Python и C++. Поэтому сначала ставим:

После этого надо запустить установку node-gyp глобально:

Если node-gyp установлен локально для проекта, то в некоторых случаях возможна ошибка Failed at install script ‘node-gyp rebuild’, например:

Если у вас не установлен Python, или Node.js не может его найти, возникает ошибка Can’t find Python executable “python”, you can set the PYTHON env variable:

Это лечится установкой Python 2.7 (важно ставить именно эту версию, не знаю почему, но версия 3 не поддерживается!), и указанием в терминале пути к исполняемому файлу питона:

Но указывать путь нужно будет каждый раз, когда вы запускаете node-gyp. Поэтому, если вы используете кастомный терминал (а я надеюсь, что вы это делаете), то лучше добавить эту команду в список команд, которые выполняются при запуске терминала.

Если не найден компилятор С++, то вы увидите ошибку `gyp` failed with exit code: 1:

Чтобы ее исправить, надо поставить Visual Studio C++ 2013 Express, ссылка на нее есть в начале поста. Имейте в виду, что это огромная среда, которая займет 6,5 гигабайт (!) места на диске (в такие моменты я особенно сильно ненавижу винду – компилятор gpp на Ubuntu в установленном виде занимает всего 17Мб). После этого надо перезагрузить компьютер, и запустить node-gyp rebuild.




14 комментариев к “Установка node-gyp на Windows 8”

  1. Александр

    Я конечно данными модулями не пользуюсь, но за статью всё равно спасибо.

    Ответить
    • Ирина

      А почему не пользуетесь?

      Ответить
      • Александр

        Ирина, потому что у меня стоит старая система Windows XP.

        Ответить
        • Ирина

          Node.js на XP точно поставить можно. Насчет остального – не знаю.

          А что же вы не перейдете на более современное что-нибудь (тот же Ubuntu Linux, если железо старое)? Ведь если у вас какиие-то проблемы с системой будут, вам даже никто помочь не сможет, потому что она устарела.

          Ответить
  2. Андрей

    Спасибо за инструкцию, работает!

    Ответить
  3. seoonly.ru

    Спасибо большое! Очень помогло)

    Ответить
  4. Дмитрий

    Добрый день. Сделал все как вы указали. Правда VS 2015 поставил.
    https://github.com/nodejs/node-gyp
    тут в описании указано, что это допустимо, и в переменных средах нужно указать
    GYP_MSVS_VERSION=2015
    Но. `gyp` failed with exit code: 1 Так и осталась. Уже и комп ребутнул, но так пока и не вышло.

    Ответить
    • Ирина

      Значит компилятор C++ не найден. По ссылке из вашего комментария, написано что VS 2015 подходит для Windows 10, поэтому, если у вас 8, попробуйте все-таки с VS 2013.

      Ответить
      • Дмитрий

        Нет, у меня как раз 10, забыл сразу указать. После комментария еще дочитал, что надо было выбрать кастомную установку и указать отдельно C++, уже обрадовался, но не тут то было. сейчас еще буду экспериментировать.

        Ответить
    • Artur Mustafin

      Я решил эту проблему просто найдя в папках node_modules для пакета node-gyp пути, по которым ищется компилятор, MS VC2013, и заменил на пути к MS VC 2015 (VC14), и всё заработало

      Ответить
  5. Artur Mustafin

    https://github.com/nodejs/node-gyp#installation

    Windows 10, порядок установки:
    1) npm install –global –production windows-build-tools
    2) npm config set msvs_version 2015

    Ответить
  6. spmbt

    Сейчас в node-gyp учтено наличие MS VC 2015, судя по коду, но всё равно была ошибка установки – явно неправильно сформированный путь к глобальному node-gyp. Исправил тем, что указал явно этот путь в конфиге npm в файле .npmrc (Win10, VC2015, Python2.7):
    npm config set node_gyp “C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js”

    Ответить
  7. Bil

    Есть Windows Server 2012 R2 (тоже, что и Win8.1).

    Не могу скомпилировать ни один из этих проектов.

    https://github.com/fancoder/cryptonote-universal-pool
    https://github.com/zone117x/node-cryptonote-pool

    npm update отрабатывает под конец с ошибками.
    В ручную получилось добавить нужные модули. Но скомпилировать multi-hashing не удалось (нужны node файлы для работы). При его построении (node-gyp build) с участием VS 2013 выдавал, что версия 120 мала, нужна 140. При построении (node-gyp build) с участием VS 2015 выдаёт кучу других ошибок, что параметры не те и т.п.

    Если есть возможность протестировать эти сборки на Windows и отписаться, что получилось буду рад. Уже несколько дней голову ломаю, зашёл в тупик.

    Ответить

Оставить комментарий