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

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

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

Моя среда:

  • Windows 7 Enterprise x64, версия 6.1.7601
  • node x86 0.8.16
  • npm 1.2.0
  • node -gyp 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

Нет INCLUDE, 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 [email protected]
gyp info using [email protected] | 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

Может быть, у вас появятся некоторые идеи?

Спасибо.

Ответ 1

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

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

в соответствии с комментарием @Jacob

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

Ответ 2

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

npm config set msvs_version 2012 --global

Ответ 3

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

npm install --global windows-build-tools

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

Обновить v2:

node -gyp обновил их readme, включив HOW-TO для окон

Оригинал:

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

Microsoft Build Tools 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 будет работать

Ответ 4

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

node-gyp rebuild --msvs_version=2012

или

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

Ответ 5

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

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

Ответ 6

на окнах 8, он работал у меня, используя:

npm install -g node-gyp -msvs_version=2012

затем

npm install -g restify

Ответ 7

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

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

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

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

Из репо:

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

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

Обе установки не содержат конфликтов, что означает, что они не взаимодействуют с существующими установками Visual Studio, С++ Build Tools или Python.

Ответ 8

После Дней копания кто-то из IRC предположил, что я пытаюсь использовать

Windows 7.1 SDK Command Prompt

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

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

setenv.cmd /Release /x86

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

Ответ 10

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

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

Взрыв! он работал

Ответ 11

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

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf

Ответ 12

Я думаю, что решение заключается в загрузке установить Microsoft windows sdk для сервера 2008 с .net framework 3.5

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

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

Спасибо

Ответ 13

  • Установить Python 2.7 (не 3.x)
  • Добавьте путь к каталогу, содержащему vcbuild.exe, в переменной среды PATH
  • Если вам нужно vcbuild.exe получить его здесь https://github.com/kin9puppy/vcbuildFixForNode

Ответ 14

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

Ответ 15

У меня также возникла проблема с компиляцией nodejs zmq.

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

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

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

И из приглашения:

npm install zmq

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

Ответ 16

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

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

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

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

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

Как только он запустится, потребуется время для создания файлов.

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

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

это построит все зависимости.

Ответ 17

Я решил эту проблему на 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 для управления версией node, как этот учебник, я использую NVM и отлично работал, я не тестировал это руководство с помощью nodist. Я использовал node 5.2.0.