NPM - 无法安装socket.IO

use*_*341 18 node.js npm socket.io

我试图在带有npm的Windows上安装socket.io,以便在nodeJS服务器上使用.

首先,当我输入"npm install socket.IO"时,我在日志中有一个错误,说明了python和node-gyp.我安装了python 2.7.3并设置了环境变量.

现在我得到了一个新的错误,它与visual studio有关(VS与npm有什么关系?它是关于编译器的?).

错误与此处相同npm install对于某些软件包(sqlite3,socket.io)失败,在Windows 7上出现错误MSB8020 但是当我在答案中使用该选项而不是错误时它告诉我一些可能的数据丢失(c4267) )但不记录任何错误.

然后,当我启动我的应用程序,它告诉我找不到模块socket.io仍然是什么可以来自?

哦,当我做npm配置得到root它告诉我"未定义"它可能与它有什么关系吗?我应该全局还是本地安装模块?

Jon*_*ski 35

Socket.IO的依赖树中至少有一个包是C/C++插件,需要在系统安装时进行编译.并且,因为它是一个依赖项,如果它没有成功安装,Socket.IO也不会.

为了启用跨系统编译,Node.js node-gyp用作其构建系统.您需要将其安装为全局包:

npm install -g node-gyp
Run Code Online (Sandbox Code Playgroud)

以及安装其依赖项.删节版:

  • Python 2
  • C/C++编译器/构建工具
    • 对于Windows,Microsoft Visual Studio 2013(C++或Windows桌面)(Express版)
      • 对于64位,可能需要Windows 7 64位SDK

然后,您应该能够将Socket.IO作为本地软件包安装,以便您可以require:

npm install socket.io
Run Code Online (Sandbox Code Playgroud)

  • 另请参阅此答案http://stackoverflow.com/a/16469222/73630如果您有2012快速桌面,则可以使用命令"npm install socket.io --msvs_version = 2012" (3认同)

Dan*_*iel 15

我在Mac上遇到了类似的问题.解决了我的问题是安装稍微旧版本的Socket.io.

我做了:

npm install socket.io @"~0.8.1"

这将安装最新版本0.8.0至0.8.9,但不是0.9.0或更高.

Socket.io然后完美安装.


Ton*_*gan 7

确保您拥有运行所需的所有软件node-gyp:

您可以gyp通过环境变量配置Visual Studio使用的版本,以避免必须设置该--msvs_version=2012属性.

例子:

  • GYP_MSVS_VERSION=2012为Visual Studio 2012 设置
  • set GYP_MSVS_VERSION=2013e('e'代表'express edition')

有关完整列表,请参阅 - https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

对于NodeJS的Windows用户来说,这仍然很痛苦,因为它假设您安装了Visual Studio的副本,并且许多最终用户永远不会拥有此.因此,我正在游说Joyent鼓励他们将Web套接字作为CORE节点的一部分包含在内,并且可以将GNU gcc编译器作为NodeJS安装的一部分发布,这样我们就可以永久性地解决这个问题.

随意添加您的投票: