Неможливо встановити модулі вузлів, які потребують компіляції в 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
  • npm 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: \ Програмні файли \ 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/isissue/629#issuecomment-158163655 Процедура встановлює Build Tools 2015, а не VS2012.
dkloke

Відповіді:


148

Спробуйте це - встановіть це в усьому світі:

npm config set msvs_version 2012 --global

1
Ідеально! Виправлені всі мої проблеми!
hansmei

2
Відмінно, я отримав помилку під час запуску набору сценаріїв, які викликали npm глибоко в надрах. Я не хотів змінювати сценарії, тому це був найкращий варіант для мене
Аластер

2
Це має бути рекомендованою відповіддю, спрацьовуючи як шарм у Windows 10
Вільям

2
Не працює. error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Зелений

на ПК під керуванням Windows 10 лише з VS2017 - я використовував налаштування VS2017, щоб також встановити інструменти збирання VC 2015 року. тоді виправлення torazaburo спрацювало :) насправді відповідь каталінта нижче виглядає краще, але я не пробував цього ....
Шон

143

Щоб зробити це без встановлення VS2010 і лише 2012 року, встановіть прапор msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

відповідно до коментаря @Jacob

npm install --msvs_version=2013 якщо у вас версія 2013 року


3
Хоча я вважаю, що друга команда повинна мати два дефіси за своїм параметром - я також поставила два дефіси для цього, і воно спрацювало. Це змусило мене минути мої помилки установки npm - дякую!
тупий

1
@Dullroar superuser.com/questions/372203/… це працювало для мене з 1 тирею плечима
Алекс

Дякую за це; npm installкоманди отримали це працює для мене. Один тире працював і для мене.
Сейрія

Це повинно бути --msvs-версія = 2012
RaduM

Це дивовижно працювало з моєю установкою Windows 7 x64! Дякую Майкрософт (за те, що ви були діками)!
Blairg23

60

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

npm install - глобальні windows-build-інструменти

завантажує та встановлює 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 відновлення запрацює


Інструменти збирання не містять наборів інструментів платформи ... на жаль, здається, немає можливості обійтися встановленням Visual Studio :( також прочитайте інструкції з установки node-gyp на windows: github.com/nodejs/node-gyp
Michael K.

оновлена ​​відповідь, щоб включити нове readme від node-gyp, спасибі @MichaelK.
каталінт

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", як зазначено вище, за допомогою DID NPM (Node Package Manager) працює для мене, але тільки при його запуску через Microsoft PowerShell . Це утиліта Windows, що надається Microsoft більше 10 років. Він має адміністративні права, необхідні для запуску інструментів збирання. Знайдіть PowerShell, клацніть правою кнопкою миші та запустіть як адміністратор. Зауважте, що запуск стандартного підказки CMD як Admin також може працювати, але я мав успіх у PowerShell . Додатковий інструментарій та підтримка команд, схожих на UNIX, можуть бути частиною того, чому він працює, хоча найкращим рішенням був запуск його як Admin.
Майкл М

41

просто додайте --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

або

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

Відповідь така ж, як і вище.
Blairg23

1
Я відповів спочатку, подивіться на дату :)
msulhas

21

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

Після виконання цих кроків я міг використовувати "npm install" без жодних проблем.


ДЯКУЮ!!! МАСОВІ KUDOS п.с. ви також повинні додати Python на свій шлях: stackoverflow.com/questions/4621255 / ...
sidonaldson

Якщо у вас вже встановлена ​​Visual Studio, то відповіді, що голосують під голосом, можуть працювати, але якщо у вас її немає, то вам потрібна ця відповідь. Дякую!
Дж. Сміт

Цей посібник є найкращим до теперішнього часу. Тим не менше, вся ця проблема base64 абсолютно непотрібна і дратівлива!
Бенедикт

О так, це мені було потрібно. Найкраща прогулянка, яку я знайшов, і це працює!
Корін

У мене є проект Node.js, що використовує Couchbase SDK for Node, який прекрасно створює робочий комп'ютер, на якому є Visual Studio 2008, 2010 та 2012 рр.. Я хотів перевірити інсталяцію на "хобістів" без копій Visual Studio. Я видалив усі інструменти розробки та SDK з домашнього комп'ютера та спробував різні варіанти "Експрес". Лише після того, як я виконав ці кроки, задокументовані 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, наданий безкоштовно. Ці інструменти необхідні для складання популярних нативних модулів. Він також встановить 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

1
Я не думаю, що пакет restify має щось спільне з питанням про ОП, а restify - це лише один із декількох пакетів, на які впливає одна і та ж проблема.
adelriosantiago

5

Після ДНЯ копання хтось із IRC запропонував мені спробувати використовувати

Windows 7.1 SDK Command Prompt

Ярлик (посилання на C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Файли програм \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Я думаю, у вас ОБОВ'ЯЗКОВО мати старіший 7.1 SDK (навіть у Windows 8.1), оскільки новіші використовують msbuild.exe замість vcbuild.exe, чого хоче node-gyp, хоча в цей момент він удвічі старший, ніж вузол: /

Опинившись у цьому підказку, мені довелося виконати наступне, щоб отримати контекст x86, тому що компілятор викидав як інакше помилку щодо архітектури:

setenv.cmd /Release /x86

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


4

Я мав те саме isuee і робив усе чари вище, єдине, що зробило для мене чари - це https://github.com/atom/atom/isissue/2435

"Тому що --msvs_version = 2013 не передається node-gyp, коли він працює за допомогою сценарію збірки. Встановіть змінну GYP_MSVS_VERSION = 2013 env і вона повинна працювати після."

Вибух! це спрацювало


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

1
якщо це не вдалося для вас, перевірка у вас є змінна оточення PYTHON = C: \ python27 \ python.exe і stackoverflow.com/a/15937635/2873481
Володимир Vukanac

npm встановити -g node-gyp @ latest?
Олександр Міллс

2

Для Windows 8 64-бітної інсталяції zmq та protobuf для мене працювало наступне: Встановити Visual Studio 2012 У командному рядку:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf

Visual Studio 2012 також постачається із командним рядком для розробників для VS2012, тому вам не доведеться налаштовувати змінну env PATH
стридер

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


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, і це спрацювало як шарм.


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 у node-master

Після запуску знадобиться час для створення файлів.

Потім у каталозі, що має .gyp файл використання команди

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

це вибудує всі залежності.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.