Не удается установить модули 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, чтобы перекомпилировать вещи.
Ответ 9
В Windows
Это помогло мне: (кредиты идут) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp
Я пробовал MINGW32, но без успеха.
on cmd.exe
$ cd "C:\Program Files\nodejs\node_modules\npm"
$ npm install -g [email protected]
Ответ 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
Ответ 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.