NPM – 无法安装socket.IO

我正在尝试在npm上安装socket.io,以便在nodeJS服务器上使用。

首先,当我input“npm install socket.IO”时,我在日志中写了一些关于python和node-gyp的错误信息。 我安装了Python 2.7.3并设置了环境variables。

现在我得到了一个新的错误,这与Visual Studio有什么关系(VS和npm有什么关系?是关于编译器的?)。

错误是一样的在这里npm安装一些包(sqlite3,socket.io)失败,错误MSB8020在Windows 7上但是,当我在答案中使用的选项,而不是错误它告诉我有关可能的数据丢失(c4267 )但不logging任何错误。

然后,当我启动我的应用程序,它告诉我无法find模块socket.io仍然可以从这里得到什么?

哦,还有当我做npmconfiguration得到根它告诉我“未定义”它可以有什么关系吗? 我应该在全球还是在本地安装模块?

Socket.IO的依赖关系树中至less有一个包是C / C ++插件 ,需要在系统上进行编译。 而且,由于它是一个依赖项,如果它没有成功安装,Socket.IO也不会。

为了实现跨系统编译,Node.js使用node-gyp作为其构build系统。 您需要将其安装为全局程序包:

 npm install -g node-gyp 

以及安装它的依赖关系 。 删节版:

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

然后,你应该能够安装Socket.IO作为本地包,所以你可以require

 npm install socket.io 

我在Mac上有类似的问题。 什么解决我的问题是安装一个稍微旧版本的Socket.io。

我做了:

npm install socket.io @“〜0.8.1”

它将安装0.8.0到0.8.9之间的最新版本,但不是0.9.0或更高版本。

然后Socket.io安装完美。

确保你有所有必需的软件来运行node-gyp

您可以通过环境variablesconfiguration--msvs_version=2012使用的Visual Studio版本,这样您就可以避免设置--msvs_version=2012属性。

例子:

  • 为Visual Studio 2012设置GYP_MSVS_VERSION=2012 2012
  • 设置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安装的一部分,以便我们可以永久解决这个问题。

随时添加您的投票在:

导致编译失败的问题是由socket.io所需的engine.io模块安装的ws模块拉入nan的后台版本。 有关详细信息,请参阅https://github.com/BrowserSync/grunt-browser-sync/issues/95 。 要在构build失败后解决问题,请执行以下操作:

  • cd to node_modules / socket.io / node_modules / engine.io / node_modules / ws
  • 编辑package.json将版本从1.4.x改为1.6.0
  • 发出命令node-gyp rebuild

你现在应该可以使用socket.io

另一种方法是使用Docker for Windows并创build一个NodeJS环境。 在开发过程中,您可以将您的Node代码安装为Docker卷,然后继续从Windows更新代码,然后执行并在Linux VM中安装依赖关系。 在部署时,您可能更愿意使用一个Dockerfile,将您的Node代码复制到Docker镜像中,然后将其烘焙到您部署的发行版映像中。

如果您不想冒险更改代码或其依赖关系的socket.io版本,则可能需要使用此方法。

如果您计划部署到企业内部网或公共/私有云,它也可能是一个有价值的解决scheme。

Docker也可以用于在不同版本的Node下testing部署,而不会干扰Windows计算机的开发环境(例如testingNodeJS库)。

  • 官方的NodeJS Docker镜像
  • 解释如何使用这些图像

这个问题让我很困扰..我尝试了很多解决scheme。

我安装了.NET Framework 2.0 SDK。

我安装了Python 2.7.x

我安装了VS 2012 Express

我设置了一些path

我使用参数--msvs_version=2010(or 2012/2013..)执行了npm install xxx

但都失败了。

最后,我卸载了Python&.NET Framework 2.0 SDK&VS 2012,清除这些path, 启用Windows Update,安装所有基本更新,重新启动我的电脑

然后执行下面的命令: npm install node-gyp -g npm install socket.io -g npm install browser-sync -g

安装日志中没有错误。

注意:这个解决scheme可能不适合你,但对我来说