Невозможно установить модули узлов, требующие компиляции в Windows 7 x64 / VS2012

192

Я не могу установить ни один из модулей, которые требуют компиляции. Все они терпят неудачу со следующей ошибкой:

MSBUILD : error MSB3411: Could not load the Visual C++ component "VCBuild.exe". ...

Моя среда:

  • Windows 7 Enterprise x64, версия 6.1.7601
  • узел x86 0.8.16
  • нпм 1.2.0
  • узел-гип 0.8.2
  • Visual Studio 2012 и множество пакетов

Связанные переменные среды:

Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShel l\v1.0;C:\Program Files\TortoiseGit\bin;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\tools;c:\tools\node

Не включайте, LIB, LIBPATH и т.д.

Я провел небольшое исследование проблемы и выяснил, что при следующей настройке ручная компиляция (с непосредственным вызовом VCBuild.exe и msbuild.exe) удалась для клонированного вручную git: //github.com/einaros/ws.git:

SET Configuration=Release
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcpackages
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin;%PATH%
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Common7\IDE;%PATH%
SET PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
SET PATH=%SystemRoot%\system32;%PATH%

SET INCLUDE=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\include
SET INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%

SET LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib
SET LIB=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\lib;%LIB%

SET MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"

VCBuild.exe C:\Tools\node\ws\build\bufferutil.vcproj "Release|Win32" /useenv
VCBuild.exe C:\Tools\node\ws\build\validation.vcproj "Release|Win32" /useenv
%MSBUILD% build/binding.sln /verbosity:diagnostic /nologo /p:Configuration=Release;Platform=Win32

Я попытался вызвать node-gyp с теми же переменными, и это не удалось:

C:\!> git clone https://github.com/einaros/ws.git
C:\!> cd ws
C:\!\ws>node-gyp configure
...
C:\!\ws>node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@0.8.2
gyp info using node@0.8.16 | win32 | ia32
gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=Win32' ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
C:\Users\User\.node-gyp\0.8.16\deps\uv\include\uv.h(55): fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory [C:\!\
ws\build\binding.sln]
C:\Users\User\.node-gyp\0.8.16\deps\uv\include\uv.h(55): fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory [C:\!\
ws\build\binding.sln]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (c:\Tools\node\node_modules\node-gyp\lib\build.js:255:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:99:17)
gyp ERR! stack     at Process._handle.onexit (child_process.js:678:10)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "c:\\Tools\\node\\\\node.exe" "c:\\Tools\\node\\node_modules\\node-gyp\\bin\\node-gyp.js" "build"
gyp ERR! cwd C:\!\ws
gyp ERR! node -v v0.8.16
gyp ERR! node-gyp -v v0.8.2
gyp ERR! not ok

Может быть, у вас есть идеи по этому поводу?

Спасибо.

Алекс Неткачов
источник
Вы пытались запустить vcvarsall.batвместо того, чтобы пытаться настроить свою среду вручную?
JohnnyHK
Нет успеха Тем не менее "MSB3411: не удалось загрузить компонент Visual C ++" VCBuild.exe "."
Алекс Неткачов
Кстати, у меня есть лучшие результаты с "C: \ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": фатальная ошибка C1083: Не удается открыть включаемый файл: 'stdint.h': нет такого файла или каталога
Алекс Неткачов
2
Я только что наконец-то получил bcrypt для установки, который требует сборки на 64-битной среде win7, и мне было тяжело разбираться. В моей ситуации я следовал инструкциям для bcrypt и для node-gyp. Решающим моментом для меня была установка Microsoft Windows 7 SDK и .Net 4 framework. Как только он был установлен (и я перезапустил свою оболочку), я обнаружил, что могу скомпилировать все с помощью установки для bcrypt. Так что мне просто интересно, если вы установили SDK? Я спрашиваю, как вы не упомянули об этом в своем списке.
Metalskin
1
Это было размещено 2015-11-19, и это работает! (Много хороших предложений в этой теме, но не радость) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 Процедура устанавливает Build Tools 2015, а не VS2012.
dkloke

Ответы:

148

Попробуйте это - установит это глобально:

npm config set msvs_version 2012 --global
srfrnk
источник
1
Отлично! Исправлены все мои проблемы!
Hansmei
2
Отлично, я получал ошибку при запуске набора скриптов, которые вызывали npm глубоко в недрах. Я не хотел изменять сценарии, так что это был лучший вариант для меня
Alastair
2
Это должен быть рекомендуемый ответ, сработавший как очарование на Windows 10
Уильям
2
Не работает error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Зеленый
на ПК с Windows 10 только с VS2017 - я использовал установку VS2017, чтобы также установить инструменты сборки VC 2015. тогда исправление torazaburo сработало :) на самом деле ответ catalint ниже выглядит лучше, но я не пробовал его ...
Sean
143

Чтобы сделать это без установки VS2010 и только 2012, установите флаг msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

согласно комментарию @Jacob

npm install --msvs_version=2013 если у вас есть версия 2013 года

Alex
источник
3
Хотя я считаю, что у второй команды тоже должно быть два дефиса - я вставил два дефиса, и это сработало. Это помогло мне преодолеть ошибки установки npm - спасибо!
Унылый
1
@Dullroar superuser.com/questions/372203/... он работал для меня с 1 приборную пожав
Alex
Спасибо за это; npm installкоманды получили это работает для меня. Один штрих работал и для меня.
Сейрия
Должно быть --msvs-version = 2012
RaduM
Это сработало с моей установкой Windows 7 x64! Спасибо Microsoft (за то, что Дикс)!
Blairg23
60

Обновление v3: https://www.npmjs.com/package/windows-build-tools

npm install --global windows-build-tools

загружает и устанавливает Visual C ++ Build Tools 2015, предоставляемый Microsoft бесплатно. Эти инструменты необходимы для компиляции популярных нативных модулей. Он также установит Python 2.7, настроив вашу машину и npm соответственно.

Обновление v2:

node-gyp обновил свой readme, чтобы включить HOW-TO для windows

Оригинал:

Нет необходимости для всей визуальной студии, вы можете скачать только инструменты сборки

Инструменты Microsoft Build 2013: http://www.microsoft.com/en-us/download/details.aspx?id=40760

Запустите cmd, чтобы установить глобальный флаг для использования версии 2013:

npm config set msvs_version 2013 --global

после этого все должно вернуться к нормальному состоянию, и ваша npm install / node-gyp rebuild будет работать

catalint
источник
Инструменты сборки не включают в себя наборы инструментов платформы ... к сожалению, кажется, что нет никакого способа обойти установку Visual Studio :( также прочитайте инструкции по установке node-gyp на windows: github.com/nodejs/node-gyp
Майкл К.
обновленный ответ, чтобы включить новый readme от node-gyp, спасибо @MichaelK.
catalint
2
Я установил VS2015 и выполнил эту команду, npm config set msvs_version 2015 --globalкоторая также работает
JRulle
Аналогично, установка Microsoft Build Tools 2015 и запуск npm config set msvs_version 2015 --globalработ
Джон Онстотт
1
Запуск 'windows-build-tools', как указано выше, с использованием NPM (Node Package Manager) DID работает для меня, но только при запуске его через Microsoft PowerShell . Это утилита Windows, предоставляемая Microsoft более 10 лет. Он обладает правами администратора, необходимыми для запуска инструментов сборки. Найдите PowerShell, щелкните по нему правой кнопкой мыши и запустите от имени администратора. Обратите внимание, что запуск стандартного приглашения CMD в качестве администратора также может работать, но у меня был успех с PowerShell . Дополнительный инструментарий и поддержка UNIX-подобных команд могут быть частью того, почему он работает, хотя запуск его с правами администратора был более значительным решением.
Майкл М
41

просто добавьте --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

или

node-gyp configure --msvs_version=2012
node-gyp build 
msulhas
источник
Тот же ответ, что и выше.
Blairg23
1
Я ответил первым, посмотрите на дату :)
msulhas
21

У меня была такая же проблема при попытке установить пакет для Node.js. После некоторого поиска в Google я нашел это прохождение: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Когда я выполнил эти шаги, я мог без проблем использовать «npm install».

Робин Риддерхолт
источник
СПАСИБО!!! MASSIVE KUDOS ps вы также должны добавить Python на свой путь: stackoverflow.com/questions/4621255/…
sidonaldson
Если у вас уже установлена ​​Visual Studio, то ответы с наибольшим количеством голосов могут сработать, однако, если у вас его нет вообще, вам нужен этот ответ. Спасибо!
ДжейДи Смит
Это прохождение является лучшим до сих пор. Тем не менее, вся эта проблема base64 совершенно ненужна и раздражает!
Бенедикт
Ах да, это то, что мне было нужно. Лучшая прогулка, которую я нашел, и это работает!
Корин
У меня есть проект Node.js, использующий Couchbase SDK для Node, который прекрасно работает на моем рабочем компьютере с Visual Studio 2008, 2010 и 2012. Я хотел протестировать установку для «любителей» без каких-либо копий Visual Studio. Я удалил все инструменты разработки Microsoft и SDK со своего домашнего компьютера и попробовал различные варианты «Express». Только после того, как я выполнил эти шаги, задокументированные TooTallNate, я смог собрать двоичные файлы Couchbase для Windows, включая этот шаг для перепривязки для работы в качестве «настольного» приложения с использованием NW.js (ранее node-webkit): 'nw-gyp rebuild - -target = 0.12.0 '
Рик Ратт
13

Благодаря @felixrieseberg вам просто нужно установить пакет windows-build-tools npm, и все готово .

npm install --global --production windows-build-tools

Вам не нужно устанавливать Visual Studio.

Вам не нужно устанавливать Microsoft Build Tools.

Из репо:

После установки npm автоматически запустит этот модуль, который загрузит и установит Visual C ++ Build Tools 2015, предоставляемый Microsoft бесплатно. Эти инструменты необходимы для компиляции популярных нативных модулей. Он также установит Python 2.7, настроив вашу машину и npm соответственно.

Windows Vista / 7 требует .NET Framework 4.5.1 (в настоящее время этот пакет не устанавливается автоматически)

Обе установки не конфликтуют, что означает, что они не связываются с существующими установками Visual Studio, C ++ Build Tools или Python.

Рамазан Полат
источник
1
Ты абсолютно прав. Я часами работаю с версиями VS, npm и gyp, но без .NET 4.5.1 (точно) нет абсолютно никакой возможности его скомпилировать. Это также объясняет, почему он будет работать с большинством VS-инсталляций, поскольку они поставляются с предустановленным .NET.
Ксан-Кун, Кларк-Дэвис,
12

на Windows 8 это работало для меня, используя:

npm install -g node-gyp -msvs_version=2012

затем

npm install -g restify
amgohan
источник
1
Я не думаю, что пакет restify имеет какое-либо отношение к вопросу OP, restify - это только один из нескольких пакетов, затронутых одной и той же проблемой.
adelriosantiago
5

После ДНЕЙ копания кто-то из IRC предложил мне попробовать

Windows 7.1 SDK Command Prompt

Ярлык (ссылки на C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Я думаю, что вы ДОЛЖНЫ иметь более старый 7.1 SDK (даже в Windows 8.1), потому что более новые используют msbuild.exe вместо vcbuild.exe, чего и хочет узел-гип, даже если он на данный момент в два раза старше узла: /

Оказавшись в этом приглашении, я должен был выполнить следующее, чтобы получить контекст x86, потому что компилятор выдавал как ошибку в противном случае об архитектуре:

setenv.cmd /Release /x86

Тогда я смог успешно запустить команды npm, которые пытались использовать node-gyp для перекомпиляции вещей.

rainabba
источник
4

У меня был тот же самый isuee и сделал все волшебство выше, единственное, что сделало волшебство для меня, от https://github.com/atom/atom/issues/2435

«Потому что --msvs_version = 2013 не передается в node-gyp, когда он запускается сценарием сборки. Установите переменную env GYP_MSVS_VERSION = 2013, и она должна работать после».

Взрыв! это сработало

amitgur
источник
3

В Windows Это помогло мне: (кредиты идут к) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp Я попытался Mingw32, но без успеха.

на cmd.exe

$ cd "C:\Program Files\nodejs\node_modules\npm"
$ npm install -g node-gyp@latest
danielpopa
источник
1
если вам это не удалось, проверьте, есть ли у вас переменная окружения PYTHON = c: \ Python27 \ python.exe и stackoverflow.com/a/15937635/2873481
Владимир Вуканац,
npm install -g node-gyp @ последний?
Александр Миллс
2

Для Windows 8 64-bit, с установкой zmq и protobuf, у меня сработало следующее: Установите Visual Studio 2012 В командной строке:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
МЧХ
источник
Visual Studio 2012 также поставляется с «Командная строка разработчика для VS2012», поэтому вам не нужно настраивать переменную PATH env
strider
1

Я думаю, что решение заключается в том, чтобы скачать установить Microsoft Windows SDK для сервера 2008 с .net Framework 3.5

или просто установите Visual studio 2008 .

Проблема заключается в том, что для сборок Windows node-gyp выполняет файл vcbuid.exe и по какой-то причине не может его найти.

Спасибо

Юбер Бома Манилла
источник
2
Причина, по которой он не нашел VCBuild, заключается в том, что он был заменен MSBuild в 2010 году, в соответствии с codeproject.com/Articles/562386/…
UnPlan2ned
Смотрите мой ответ ниже. Требуется vcbuild.exe, но необходимо установить много переменных окружения, и проект node-gyp не документирует их.
Rainabba
1
  1. Установите Python 2.7 (не 3.x)
  2. Добавьте путь к каталогу, содержащему vcbuild.exeв вашей переменной средыPATH
  3. Если вам нужно vcbuild.exeполучить его здесь https://github.com/kin9puppy/vcbuildFixForNode
kingPuppy
источник
0

У меня также было много проблем для компиляции nodejs zmq.

Для проблемы с vcbuild.exe, просто добавьте его в PATH

Для других проблем я мог бы скомпилировать просто используя Windows 7.1 SDK Command Prompt

(Меню Программы -> Microsoft Windows SDK v7.1 -> Командная строка Windows 7.1 SDK)

И из подсказки:

npm install zmq

Это работает :)

Клейсон Риос
источник
0

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

user3035156
источник
1
не могли бы вы подробнее рассказать о том, как вы перешли на x86?
Арман Ортега
0

в cmd установить путь к Visual Studio в зависимости от вашей версии как

Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%

Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%

Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%

В node-master (оригинальный модуль узла, загруженный из git) запустите vcbuild.bat с правами администратора. vcbild.bat сгенерирует зависимости, связанные с Windows, и добавит имя папки Release в master-узел

После запуска потребуется время, чтобы собрать файлы.

Затем в каталоге, имеющем файл .gyp, используйте команду

node-gyp rebuild --msvs_version=2012 --nodedir="Dive Name:\path to node-master\node-master"

это создаст все зависимости.

niket
источник
0

Я решил эту проблему на Windows 8 и Windows 10 Pro с этим учебником. Я много раз пытался решить эту проблему множеством разных решений, но у меня получалось только с этим: http://www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64 Я заметил, что я не использовал nodist для управления версией узла, как этот учебник, я использую NVM и работал нормально, я не тестировал этот учебник с nodist. Я использовал узел 5.2.0.

Марко Блос
источник