Во-первых, я должен быть ясен, я ни в коем случае не гуру javascript. Я просто в восторге от этого, и мне нравится узнавать что-то новое.
Я использую Windows 7 Ultimate x64 с пакетом обновления 1 (SP1), обновления для Windows включены, node.js — v0.10.22. Я пробовал этот процесс индивидуально с Visual Studio C ++ Express версий 2008, 2010 и 2012, каждый .net Framework устанавливается в порядке с обновлениями. Я также попробовал последний пакет обновлений каждой версии после первоначальной чистой установки.
Итак, в теории у меня в какой-то момент должна была быть каждая возможная комбинация … И я дважды проверил переменные окружения и перезагрузился для каждой версии, просто для хорошей меры. Тем не менее, он все равно терпит неудачу так же
Мне удалось отследить это назад, насколько node-gyp rebuild
команда в многочисленных модулях (node-ant
, sails
и т.д ..), который выбрасывает:
E:\Temp\node-test\node_modules\node-ant\node_modules\usb>node "C:\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
Build started 2013/12/06 19:46:52.
__________________________________________________
Project "E:\Temp\node-test\node_modules\node-ant\node_modules\usb\build\binding.sln" (default targets):
Target ValidateSolutionConfiguration:
Building solution configuration "Release|x64".
Target Build:
Target usb_bindings:
VCBuild.exe E:\Temp\node-test\node_modules\node-ant\node_modules\usb\build\usb_bindings.vcproj "Release|x64"cl : Command line warning D9025: overriding '/MT' with '/MD'
cl : Command line warning D9025: overriding '/MT' with '/MD'
cl : Command line warning D9025: overriding '/MT' with '/MD'
cl : Command line warning D9025: overriding '/MT' with '/MD'
e:\temp\node-test\node_modules\node-ant\node_modules\usb\src\node_usb.h(5): fatal error C1083: Cannot open include file: 'string': No such file or directory
e:\temp\node-test\node_modules\node-ant\node_modules\usb\src\node_usb.h(5): fatal error C1083: Cannot open include file: 'string': No such file or directory
e:\temp\node-test\node_modules\node-ant\node_modules\usb\src\node_usb.h(5): fatal error C1083: Cannot open include file: 'string': No such file or directory
Project : warning PRJ0018: The following environment variables were not
found:
Done building target "usb_bindings" in project "binding.sln" -- FAILED.
Done building target "Build" in project "binding.sln" -- FAILED.
Done building project "binding.sln" -- FAILED.
Build FAILED.
cl : Command line warning D9025: overriding '/MT' with '/MD'
cl : Command line warning D9025: overriding '/MT' with '/MD'
cl : Command line warning D9025: overriding '/MT' with '/MD'
cl : Command line warning D9025: overriding '/MT' with '/MD'
Project : warning PRJ0018: The following environment variables were not found:
e:\temp\node-test\node_modules\node-ant\node_modules\usb\src\node_usb.h(5): fatal error C1083: Cannot open include file: 'string': No such file or directory
e:\temp\node-test\node_modules\node-ant\node_modules\usb\src\node_usb.h(5): fatal error C1083: Cannot open include file: 'string': No such file or directory
e:\temp\node-test\node_modules\node-ant\node_modules\usb\src\node_usb.h(5): fatal error C1083: Cannot open include file: 'string': No such file or directory
5 Warning(s)
3 Error(s)
Time Elapsed 00:00:00.17
gyp ERR! build error
gyp ERR! stack Error: `msbuild` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"gyp ERR! cwd E:\Temp\node-test\node_modules\node-ant\node_modules\usb
gyp ERR! node -v v0.10.22
gyp ERR! node-gyp -v v0.11.0
gyp ERR! not ok
npm ERR! [email protected] preinstall: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the usb package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls usb
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\nodejs\\\\node.exe" "C:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-ant" "--msvs_version=auto"npm ERR! cwd E:\Temp\node-test
npm ERR! node -v v0.10.22
npm ERR! npm -v 1.3.14
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! E:\Temp\node-test\npm-debug.log
npm ERR! not ok code 0
Моя последняя и, возможно, самая информативная попытка, я обнаружил, что могу указать инструменты сборки Visual Studio, которые можно использовать с …
E:\Temp\node-test>npm install node-ant --msvs_version=auto
…из которых кажется =auto
пытается определить версию из переменных среды (?).
Я попытался указать каждую из следующих версий, которые я нашел в списке в C:\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\MSVSVersion.py
файл, =2008
, =2010
а также =2012
те, которые даже не доходят до ошибки, указанной выше, терпят неудачу даже раньше, с небольшими изменениями следующей ошибки, жалуясь на версии проекта:
E:\Temp\node-test>npm install node-ant --msvs_version=2008
npm http GET https://registry.npmjs.org/node-ant
npm http 304 https://registry.npmjs.org/node-ant
npm http GET https://registry.npmjs.org/usb
npm http 304 https://registry.npmjs.org/usb
> [email protected] preinstall E:\Temp\node-test\node_modules\node-ant\node_modules\usb
> node-gyp rebuildE:\Temp\node-test\node_modules\node-ant\node_modules\usb>node "C:\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
build/binding.sln(1): Solution file error MSB5014: File format version is not recognized. MSBuild can only read solution files between versions 7.0 and 9.0, in
clusive.
gyp ERR! build error
gyp ERR! stack Error: `msbuild` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"gyp ERR! cwd E:\Temp\node-test\node_modules\node-ant\node_modules\usb
gyp ERR! node -v v0.10.22
gyp ERR! node-gyp -v v0.11.0
gyp ERR! not ok
npm ERR! [email protected] preinstall: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the usb package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls usb
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\nodejs\\\\node.exe" "C:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-ant" "--msvs_version=2008"npm ERR! cwd E:\Temp\node-test
npm ERR! node -v v0.10.22
npm ERR! npm -v 1.3.14
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! E:\Temp\node-test\npm-debug.log
npm ERR! not ok code 0
GitHub репо был довольно тихим в течение долгого времени, поэтому я полагаю, что спрашивать там может быть бессмысленно (хотя я собираюсь искать вилки репо, только заметил, что их 32), но в каждом отчете Google помогает мне найти C1083: Cannot open include file:
В остальной части строки указан определенный файл, который он не может найти. В отличие от моего 'string'
раздел.
Это мой первый вопрос, так что дайте мне знать, если вам нужно больше деталей. Я — тестировщик программного обеспечения Java днем, поэтому я не привыкать использовать инструменты отладки. У меня сейчас действительно нет идей, кто-нибудь сможет указать мне направление решения этой головной боли …?
[править] Для справки, вот несколько похожих проблем, которые я обнаружил, в каждой из которых я попробовал предложения, сделанные как можно точнее.И самый похожий (без ответа) в официальном списке репо.
[edit2] Извинения за правки, но еще один момент, который может или не может быть важным. У меня установлен CygWin, и он включен в мой системный путь. Честно говоря, я чувствую себя более комфортно в Linux, поэтому я естественно использую команды терминала * nix внутри Windows ‘cmd
незамедлительный. Может ли это быть причиной того, что некоторые узловые модули неправильно определяют систему * nix для чего-то, что нужно инструментам сборки Windows …?
Нашел решение моей проблемы, разместив здесь в качестве ответа для справки, если у кого-то еще есть такие же ошибки.
Простое двухэтапное исправление:
node-gyp
как глобальный модуль: npm install -g node-gyp
,npm install sails --msvs_version=2012
,До сих пор это работало для каждого пакета, который я пробовал, который использует Visual Studio для создания части своего API во время установки.
Я считаю, что это также работает для VS2010; В этом случае укажите соответствующие --msvs_version
,
Других решений пока нет …