Невозможно установить модули узлов, требующие компиляции в 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
- Установите Python 2.7 (не 3.x)
- Добавьте путь к каталогу, содержащему
vcbuild.exe
на вашей переменной средыPATH
- Если тебе надо
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, и это сработало как шарм.