首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让node-gyp在Windows 7平台上工作

如何让node-gyp在Windows 7平台上工作
EN

Stack Overflow用户
提问于 2014-01-18 13:57:39
回答 3查看 17.7K关注 0票数 15

我在Windows7+ Node.js平台上使用node-gyp的尝试失败了3,当我试图编译标准的"Hello World“示例2时。注意: node-gyp以类似的方式失败3,当尝试使用或不使用"-g”的npm install contextify时,因此这些可能是相关的问题。

配置:

  • node-gyp 0.12.2
  • Windows7 x64 SP1
  • Python 2.7
  • Node.js 0.10.24

H110Visual Studio2010根据<代码>C11<代码>H113与SDK 7.1根据<代码>C14<代码>H215<代码>H116从标准Windows命令提示符或SDK7.1命令提示符<代码>H217<代码>F218运行node-gyp

参考文献:

1

2

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

完整的跟踪如下:

代码语言:javascript
复制
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   
EN

回答 3

Stack Overflow用户

发布于 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中,类似于

代码语言:javascript
复制
<DRIVERLETTER>:\Users\<USERNAME>\.node-gyp\0.10.3\deps\uv

因此,如果您阅读npm文档,您将在npm install上找到该参数

--nodedir=/path/ to / node /source参数将允许npm找到节点源代码,以便npm可以编译本机模块。

所以最后的命令应该是

代码语言:javascript
复制
npm install <package> --nodedir="<DRIVERLETTER>:\Users\<USERNAME\.node-gyp\0.10.3"

您可能会收到一些警告,但它应该会成功完成。

票数 9
EN

Stack Overflow用户

发布于 2014-11-17 01:14:19

在执行任何操作之前,请通过从节点网站安装来更新节点和NPM (在Windows上,通过npm更新节点和npm似乎是失败的。我不确定那些按顺序删除和重新安装所有内容的指令是不是最新的,但这肯定是一个主要的PITA,这激发了我寻找替代品的灵感,因为这篇文章在节点年份有点老了。

最终,这解决了我使用node-gyp作为pg模块的依赖项的问题,我相信它可以在vs 2013上运行(或者至少这是它在开始工作之前所寻找的)。

票数 1
EN

Stack Overflow用户

发布于 2014-05-23 00:05:12

这是帮助我解决这个问题的方法:

由于某些原因,我将node-gyp放在两个不同的目录中。

目录1:

代码语言:javascript
复制
C:\Users\Imran Bughio\.node-gyp\0.10.21\

目录2:

代码语言:javascript
复制
C:\Users\Imran Bughio\Documents\.node-gyp\0.10.21\

在第二个目录中,我在deps文件夹中有一个uv文件夹,但是这个文件夹不在第一个目录中。

下面是路径--请注意,其中包含uv.h文件。

代码语言:javascript
复制
C:\Users\Imran Bughio\.node-gyp\0.10.21\deps\uv

解决方案:

我只需将uv &所有其他额外文件夹从目录2移动到目录1。

@Phoenix answer给了我一点提示,最终帮助我解决了这个问题,谢谢Phoenix。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21200655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档