无法在Windows 7上安装socket.io

17

我是Node.js和NPM的新手。 我正在使用Node v0.10.0版本,当我运行npm install socket.io命令时,我遇到了以下错误:

C:\Users\USER\AppData\Roaming\npm\node_modules\socket.io\node_modules\socket.io-
client\node_modules\ws>node "C:\Users\USER\AppData\Roaming\npm\node_modules\npm\
bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(29
7,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.
TargetFrameworkVersion or PlatformToolset may be set to an invalid version nu
mber. [C:\Users\USER\AppData\Roaming\npm\node_modules\socket.io\node_modules\so
cket.io-client\node_modules\ws\build\bufferutil.vcxproj]
bufferutil.cc
c:\users\user\.node-gyp\0.10.0\deps\uv\include\uv-private/uv-win.h(32): fatal e
rror C1083: Cannot open include file: 'winsock2.h': No such file or directory [
C:\Users\USER\AppData\Roaming\npm\node_modules\socket.io\node_modules\socket.io
-client\node_modules\ws\build\bufferutil.vcxproj]

我猜这是一个构建错误,所以我花了很多时间在谷歌上搜索并更新我的Windows SDK、Visual Studio、.Net Framework等软件。无论用哪种方式,都会出现如上错误。根据这个链接 https://connect.microsoft.com/VisualStudio/feedback/details/713415/erroneous-windows-sdk-x64-compilation-warning 的说法,由于我使用的是x64机器,所以这个警告可能是虚假的。我确实看到winsock2.h位于C:\Program Files\Microsoft SDKs\Windows\v7.1\Include中,并将其包含在了我的路径中。我的路径包含以下内容:

C:\Program Files\nodejs\;
C:\Program Files (x86)\Microsoft Visual Studio 8\VC\vcpackages;
C:\Program Files\Microsoft Windows Performance Toolkit\;
C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include;
C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include;
C:\Program Files\Debugging Tools for Windows (x64)\winext\manifest;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;

这个路径也出现了相同的错误。有任何想法吗?


你的安装工作正常吗?我经常在Windows上收到警告,但最终并不是真正的问题。 - outside2344
是的,尽管有消息提示,socket.io似乎正在工作。 - landland
4个回答

10

我遇到了类似的问题,尝试使用npm安装socket.io却无法成功。

在这里https://github.com/LearnBoost/socket.io/issues/1151#issuecomment-16015421

最终我设置了这个环境变量:

set GYP_MSVS_VERSION=2013

这是在安装了Windows SP1 (准备安装程序)、SP1安装程序、101个来自Windows更新的更新以及VS 2013 Express之后发生的。

真的很容易 :-/


5
在Windows 7 x64上安装node时出现问题。基本上,您必须在使用msbuild构建解决方案时明确指定Platform Toolset。以下是适用于我的解决方案: 在终端中运行:

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x64

然后运行

npm install socket.io

更多信息请点击这里

在这里,您应该对链接的内容进行简要概述...... 如果链接失效,那么未来的读者可能无法弄清楚问题所在。 - Conduit
Ray C Lin,您可以直接将该命令粘贴到Windows Shell中。 - user2961443
最终成功了。在尝试了其他所有方法之后,我结合管理员权限运行这个方法才成功了。 - backdesk

2

您是否以足够的权限启动了CMD提示符?由于这个原因,我在有时候使用npm install遇到了问题。

如果是这种情况,请以管理员身份运行CMD。


1
大多数情况下,使用npm install -g <packagename> 命令就可以正常安装包,但当安装socket.io中的"ws"模块时,我遇到了问题。在管理员权限下运行CMD并重新安装后问题得以解决。 - Michael Paulukonis
太棒了,我很高兴它能正常工作!那么呢...选一个被采纳的答案怎么样?;) - Jeremythuff
3
哦,这真是令人恼火。我现在在另一台机器上也遇到了这个错误,而且我已经以管理员身份运行了命令提示符。 - Michael Paulukonis

2

因此,尽管我关于以管理员身份运行shell的评论有效,但我在另一台机器上遇到了这个问题,而我仍然以管理员身份运行shell。

(以下是错误的几乎完整提取,以便搜索引擎受益)

错误似乎与node-gyp有关,我无法独立安装它,并找到了一些笔记来帮助解决:

你需要:

  • Microsoft Visual Studio C++ 2010(Express版本效果很好)
    • 我已经有了这个
  • 对于node和本地模块的64位构建,您还需要Windows 7 64位SDK
    • 此安装一直失败,然后我发现
    • _如果您的vcredist_x86.exe比Visual C ++ 2010 x86 Redistributable的版本10.0.30319新,则SDK 7.1不会安装。_ 来源

  • 我卸载了10.0.[something > 30319]
  • 安装了SDK 7.1
  • 然后就能够顺利地npm i -g node-inspectorsocket.io是一个依赖项)

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(296,5): warning MSB800
3: Could not find VCInstallDir variable from the registry.  TargetFrameworkVersion or PlatformTools
et may be set to an invalid version number. [C:\Users\Michael Paulukonis\AppData\Roaming\npm\node_m
odules\socket.io\node_modules\socket.io-client\node_modules\ws\build\bufferutil.vcxproj]

  bufferutil.cc

c:\users\michael paulukonis\.node-gyp\0.10.5\deps\v8\include\v8stdint.h(33): fatal error C1083: Can
not open include file: 'stddef.h': No such file or directory [C:\Users\Michael Paulukonis\AppData\R
oaming\npm\node_modules\socket.io\node_modules\socket.io-client\node_modules\ws\build\bufferutil.vc
xproj]

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(296,5): warning MSB800
3: Could not find VCInstallDir variable from the registry.  TargetFrameworkVersion or PlatformTools
et may be set to an invalid version number. [C:\Users\Michael Paulukonis\AppData\Roaming\npm\node_m
odules\socket.io\node_modules\socket.io-client\node_modules\ws\build\validation.vcxproj]

  validation.cc

c:\users\michael paulukonis\.node-gyp\0.10.5\deps\v8\include\v8stdint.h(33): fatal error C1083: Can
not open include file: 'stddef.h': No such file or directory [C:\Users\Michael Paulukonis\AppData\R
oaming\npm\node_modules\socket.io\node_modules\socket.io-client\node_modules\ws\build\validation.vc
xproj]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接