2014-01-18 2 views
16

Мои попытки использовать node-gyp на платформе Windows 7 + Node.js потерпели неудачу [3] при попытке скомпилировать стандартный пример Hello World [2 ]. Примечание: node-gyp не работает аналогичным образом [3] при попытке npm install contextify w или без «-g», таким образом, это могут быть связанные проблемы.Как заставить node-gyp работать на платформе Windows 7

Конфигурация:

  • узел-лавочка 0.12.2
  • Windows 7 x64 SP1
  • Python 2.7
  • Node.js 0.10.24
  • Visual Studio 2010 в [1] (также попробовал 2012 год)
  • VS SDK 7.1 на [1] (исп. 32 и 64-разрядные версии)
  • running node-gyp от стандартной командной строки Windows или Cmd SDK7.1 подскажет

Refs:
[1] https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

[2] https://github.com/joyent/node/tree/master/test/addons/hello-world

[3] "узел-лавочка перестраивать" на «Привет мира «[2] проект производит следующие 2 ошибки:

.... узел-Gyp \ 0.10.24 \ DEPS \ уф \ Include \ win.h (8738): ошибка C2371: 'SYSTEM_POWER_STATUS': переопределения; различные базовые типы [... \ build \ test.vcxproj]

.... node-gyp \ 0.10.24 \ deps \ uv \ include \ mswsock.h (27): фатальная ошибка C 1083: Can not открыт не включают файл: '_mingw.h': нет такого файла или каталога [... \ сборка \ test.vcxproj]

и после 2 предупреждения:

.... узел-Gyp \ 0.10.24 \ deps \ uv \ include \ win.h (13513): предупреждение C4005: 'UNALIGNED': макроопределение [... \ build \ test.vcxproj]

.... узел-лавочка \ 0.10.24 \ Deps \ уф \ включать \ mswsock.h (26): предупреждение C4068 : неизвестно Прагма [... \ сборка \ test.vcxproj]

полная слежка:

C:\sigma\node_modules\x>node-gyp rebuild 
gyp info it worked if it ends with ok 
gyp info using [email protected] 
gyp info using [email protected] | win32 | x64 
gyp info spawn python 
gyp info spawn args [ 'C:\\Users\\Anybody\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py', 
gyp info spawn args 'binding.gyp', 
gyp info spawn args '-f', 
gyp info spawn args 'msvs', 
gyp info spawn args '-G', 
gyp info spawn args 'msvs_version=auto', 
gyp info spawn args '-I', 
gyp info spawn args 'C:\\sigma\\node_modules\\x\\build\\config.gypi', 
gyp info spawn args '-I', 
gyp info spawn args 'C:\\Users\\Anybody\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi', 
gyp info spawn args '-I', 
gyp info spawn args 'C:\\Users\\Anybody\\.node-gyp\\0.10.24\\common.gypi', 
gyp info spawn args '-Dlibrary=shared_library', 
gyp info spawn args '-Dvisibility=default', 
gyp info spawn args '-Dnode_root_dir=C:\\Users\\Anybody\\.node-gyp\\0.10.24', 
gyp info spawn args '-Dmodule_root_dir=C:\\sigma\\node_modules\\x', 
gyp info spawn args '--depth=.', 
gyp info spawn args '--generator-output', 
gyp info spawn args 'C:\\sigma\\node_modules\\x\\build', 
gyp info spawn args '-Goutput_dir=.' ] 
gyp info spawn msbuild 
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=x64' ] 
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. test.cpp 
C:\Users\Anybody\.node-gyp\0.10.24\deps\uv\include\win.h(8738): error C2371: 'SYSTEM_POWER_STATUS' : redefinition; different basic types [C:\sigma\node_modules\x\build\test.vcxproj] C:\Users\Anybody\.node-gyp\0.10.24\deps\uv\include\win.h(8737) : see declaration of 'SYSTEM_POWER_STATUS' 

C:\Users\Anybody\.node-gyp\0.10.24\deps\uv\include\win.h(13513): warning C4005: 'UNALIGNED' : macro redefinition [C:\sigma\node_modules\x\build\test.vcxproj] C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdef s.h(502) : see previous definition of 'UNALIGNED' 

C:\Users\Anybody\.node-gyp\0.10.24\deps\uv\include\mswsock.h(26): warning C4068 : unknown pragma [C:\sigma\node_modules\x\build\test.vcxproj] C:\Users\Anybody\.node-gyp\0.10.24\deps\uv\include\_mingw.h(33): warning C4068: unknown pragma [C:\sigma\node_modules\x\build\test.vcxproj] 

C:\Users\Anybody\.node-gyp\0.10.24\deps\uv\include\_mingw.h(51): fatal error C1 189: #error : ERROR: You must use a GNU Compiler. [C:\sigma\node_modules\x\build\test.vcxproj] 

gyp ERR! build error 
gyp ERR! stack Error: msbuild failed with exit code: 1 
gyp ERR! stack at ChildProcess.onExit (C:\Users\Anybody\AppData\Roaming\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:\\Users\\Anybody\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" 
gyp ERR! cwd C:\sigma\node_modules\x 
gyp ERR! node -v v0.10.24 
gyp ERR! node-gyp -v v0.12.2 
gyp ERR! not ok 
+0

Я страдаю от той же проблемы ~ Я следовал всем шагам от ** [Ref [1]] (https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup) **, вы решили? если так пожалуйста, поделитесь. –

+0

Пожалуйста, добавьте свои ощущения к этой проблеме: https://github.com/TooTallNate/node-gyp/issues/662, возможно, они добавят правильный установщик, если к этому присоединятся все больше людей. – inf3rno

ответ

9

Хотя этот вопрос составляет один месяц, я закончил поиск по сети, и это было частью результатов поиска.

Таким образом, это ответ на вопрос «не следует делать, но это работает».

Во-первых, я не знаком с node-gyp или всей визуальной студии компиляции и прочее, я действительно очень жаль узлов, Gyp в зависимости от питона (действительно молчит WTF)

Так не известно Причина nodejs версии старше 0.10.22 (я запускаю это сейчас, поэтому я предполагаю, что он там, где он начинается)

При поиске в системе для файла «uv.h» вы можете получить некоторые результаты IF вы ранее установили версии nodejs, иначе вы можете продолжать читать.

мой предыдущий 0.10.3 nodejs версия была uv.h в узел-Gyp некоторые, как

<DRIVERLETTER>:\Users\<USERNAME>\.node-gyp\0.10.3\deps\uv 

так что если вы читаете документацию НПМ вы найдете аргумент о npm install

The - nodedir =/path/to/node/source позволяет npm найти исходный код узла , так что npm может скомпилировать собственные модули.

поэтому последняя команда должна быть

npm install <package> --nodedir="<DRIVERLETTER>:\Users\<USERNAME\.node-gyp\0.10.3" 

вы можете получить некоторые предупреждения, но он должен завершить с успехом.

+0

У меня нет версии «0.10.3», но я нашел файл 'uv.h' в версии« 0.10.21 »- попытка установить модуль' jsdom' - по-прежнему такая же ошибка. –

+19

+1 для WTF. Node-gyp на windows7 - это большой позор, который бросает большую тень на юзабилити узла. – setec

+0

'--nodedir' должно быть указано до' \ dep \ uv', например '--nodedir =" : \ Users \ Sithu

0

Это то, что помогло мне решить это:

По какой-то причине я имел узел-Gyp в двух разных каталогах.

Каталог 1:

C:\Users\Imran Bughio\.node-gyp\0.10.21\ 

Каталог 2:

C:\Users\Imran Bughio\Documents\.node-gyp\0.10.21\ 


Во 2-каталог я имел папку uv внутри deps папки, но эта папка не была там в 1-й каталог ,

Вот путь - заметьте, что у него был uv.h файл внутри.

C:\Users\Imran Bughio\.node-gyp\0.10.21\deps\uv 

РЕШЕНИЕ:

Я просто переехал уф & все другие дополнительные папки из каталога 2 в каталог 1.

@Phoenix ответ дал мне небольшой намек, что в конечном итоге помогло мне разрешите это, спасибо Phoenix.

1

Перед тем, как что-либо сделать, обновите узел и NPM, установив с узла узла (обновление узла и npm через npm, похоже, было повреждено в Windows. Я не уверен, что они удаляют и переустанавливают все, инструкции по заказу в настоящее время, но это, безусловно, было бы основным PITA, что вдохновило меня искать альтернативы, учитывая, что эта должность была немного старой в узловые годы.

В конечном итоге это разрешило проблему для меня с node-gyp как зависимость для модуля pg, и он работал с vs 2013, я полагаю (или, по крайней мере, это то, что, казалось, искало, прежде чем он начал работать).

+0

Я боролся с этим в течение нескольких дней на нескольких машинах, а установка VS2013 была окончательно исправлена. –

Смежные вопросы