我在Windows7+ Node.js平台上使用node-gyp的尝试失败了3,当我试图编译标准的"Hello World“示例2时。注意: node-gyp以类似的方式失败3,当尝试使用或不使用"-g”的npm install contextify
时,因此这些可能是相关的问题。
配置:
H110Visual Studio2010根据<代码>C11<代码>H113与SDK 7.1根据<代码>C14<代码>H215<代码>H116从标准Windows命令提示符或SDK7.1命令提示符<代码>H217<代码>F218运行node-gyp
参考文献:
3 "hello world"2项目上的"node-gyp rebuild“产生以下2个错误:
包含文件错误:‘....node-gyp\0.10.24\deps\uv\include\win.h(8738):’:重定义;不同的基本类型包含致命错误C 1083:无法打开包含文件:‘_SYSTEM_POWER_STATUS ...\build\test.vcxproj h’:没有这样的文件或目录...\build\test.vcxproj
以及以下两个警告:
未对齐的宏重定义警告....node-gyp\0.10.24\deps\uv\include\win.h(13513)::‘....node-gyp\0.10.24\deps\uv\include\mswsock.h(26):’:
redefinition C4005 ...\build\test.vcxproj C4068 : unknown杂注...\build\test.vcxproj
完整的跟踪如下:
C:\sigma\node_modules\x>node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@0.12.2
gyp info using node@0.10.24 | 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
发布于 2014-03-03 18:37:01
虽然这个问题已经提出一个月了,但我最终还是在网上搜索,这是搜索结果的一部分。
因此,这是一个不应该做,但它是有效的答案。
首先,我不熟悉node-gyp
或者整个visual studio编译之类的东西,我真的为依赖的node-gyp (一个非常安静的python WTF)感到遗憾。
因此,不知什么原因,nodejs版本早于0.10.22 (我现在正在运行它,所以我假设它是从那里开始的)
如果你在你的系统中搜索文件"uv.h“,你可能会得到一些结果,如果你之前安装了nodejs版本,否则你可以继续阅读。
我之前的0.10.3NodeJS版本将uv.h
放到了node-gyp中,类似于
<DRIVERLETTER>:\Users\<USERNAME>\.node-gyp\0.10.3\deps\uv
因此,如果您阅读npm文档,您将在npm install
上找到该参数
--nodedir=/path/ to / node /source参数将允许npm找到节点源代码,以便npm可以编译本机模块。
所以最后的命令应该是
npm install <package> --nodedir="<DRIVERLETTER>:\Users\<USERNAME\.node-gyp\0.10.3"
您可能会收到一些警告,但它应该会成功完成。
发布于 2014-11-17 01:14:19
在执行任何操作之前,请通过从节点网站安装来更新节点和NPM (在Windows上,通过npm更新节点和npm似乎是失败的。我不确定那些按顺序删除和重新安装所有内容的指令是不是最新的,但这肯定是一个主要的PITA,这激发了我寻找替代品的灵感,因为这篇文章在节点年份有点老了。
最终,这解决了我使用node-gyp作为pg模块的依赖项的问题,我相信它可以在vs 2013上运行(或者至少这是它在开始工作之前所寻找的)。
发布于 2014-05-23 00:05:12
这是帮助我解决这个问题的方法:
由于某些原因,我将node-gyp放在两个不同的目录中。
目录1:
C:\Users\Imran Bughio\.node-gyp\0.10.21\
目录2:
C:\Users\Imran Bughio\Documents\.node-gyp\0.10.21\
在第二个目录中,我在deps
文件夹中有一个uv
文件夹,但是这个文件夹不在第一个目录中。
下面是路径--请注意,其中包含uv.h
文件。
C:\Users\Imran Bughio\.node-gyp\0.10.21\deps\uv
解决方案:
我只需将uv &所有其他额外文件夹从目录2移动到目录1。
@Phoenix answer给了我一点提示,最终帮助我解决了这个问题,谢谢Phoenix。
https://stackoverflow.com/questions/21200655
复制相似问题