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

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

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

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

Благодарю.

17 ответов

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

npm config set msvs_version 2012 --global

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

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

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

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

Обновление 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 будет работать

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

node-gyp rebuild --msvs_version=2012

или же

node-gyp configure --msvs_version=2012
node-gyp build 

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

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

Благодаря @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.

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

npm install -g node-gyp -msvs_version=2012

затем

npm install -g restify

После ДНЕЙ копания кто-то в 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 для перекомпиляции вещей.

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

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

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

В 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

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

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
  1. Установите Python 2.7 (не 3.x)
  2. Добавьте путь к каталогу, содержащему vcbuild.exe на вашей переменной среды PATH
  3. Если тебе надо vcbuild.exe получите это здесь https://github.com/kin9puppy/vcbuildFixForNode

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

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

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

Спасибо

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

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

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

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

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

npm install zmq

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

В 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"

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

Я решил эту проблему на 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.

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

Другие вопросы по тегам