Node.js NPM-Can';t安装socket.IO

Node.js NPM-Can';t安装socket.IO,node.js,socket.io,npm,Node.js,Socket.io,Npm,我正在尝试在带有npm的windows上安装socket.io,以便在nodeJS服务器上使用 首先,当我键入“npm install socket.IO”时,我在日志中出现了一个关于python和节点gyp的错误。我安装了Python2.7.3并设置了环境变量 现在我发现了一个新的错误,它与VisualStudio有关(VS到底与npm有什么关系?是关于编译器的吗?) 错误与此处相同 但是当我在答案中使用选项而不是错误时,它告诉我可能的数据丢失(c4267),但不会记录任何错误 然后,当我启动

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

首先,当我键入“npm install socket.IO”时,我在日志中出现了一个关于python和节点gyp的错误。我安装了Python2.7.3并设置了环境变量

现在我发现了一个新的错误,它与VisualStudio有关(VS到底与npm有什么关系?是关于编译器的吗?)

错误与此处相同 但是当我在答案中使用选项而不是错误时,它告诉我可能的数据丢失(c4267),但不会记录任何错误

然后,当我启动应用程序时,它告诉我仍然找不到module socket.io 这是怎么回事

哦,还有,当我使用npm-config-get-root时,它会告诉我“未定义”,这和它有什么关系吗?
我应该全局安装模块还是本地安装模块?

Socket中至少有一个软件包。IO的依赖关系树是一个需要在安装时在系统上编译的树。而且,由于它是一个依赖项,如果安装失败,Socket.IO也不会成功

为了支持跨系统编译,Node.js使用作为其构建系统。您需要将其作为全局软件包安装:

npm install -g node-gyp
以及有。节选本:

  • Python 2
  • C/C++编译器/构建工具
    • 对于Windows,Microsoft Visual Studio 2013(C++或Windows桌面)(快速版)
      • 对于64位,可能需要Windows 7 64位SDK
然后,您应该能够将Socket.IO作为本地软件包安装,这样您就可以
要求它:

npm install socket.io

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

我做到了:

npm安装套接字.io@“~0.8.1”

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


Socket.io安装得非常完美。

确保您拥有运行
节点gyp所需的所有软件:

您可以通过环境变量配置
gyp
使用的Visual Studio版本,从而避免设置
--msvs\u version=2012
属性

示例:

  • 为Visual Studio 2012设置
    GYP\u MSVS\u VERSION=2012
  • set
    GYP\u MSVS\u VERSION=2013e
    (“e”代表“express edition”)
有关完整列表,请参阅 -

这对NodeJS的Windows用户来说仍然是痛苦的,因为它假设您安装了visualstudio的副本,而许多最终用户永远不会安装它。因此,我正在游说Joyent,以鼓励他们将web套接字作为核心节点的一部分,并可能将GNU gcc编译器作为NodeJS安装的一部分提供,这样我们就可以永久解决这个问题

请随时在以下网址添加您的投票:


导致编译失败的问题是,socket.io所需的engine.io模块安装的ws-module拉入了nan的后台版本。有关详细信息,请参阅。要在生成失败后解决此问题,请执行以下操作:

  • cd到node_modules/socket.io/node_modules/engine.io/node_modules/ws
  • 编辑package.json将nan的版本从1.4.x更改为1.6.0
  • 发出命令节点gyp重建

您现在应该可以使用socket.io了。这个问题让我非常困扰。。 我尝试了很多解决办法

我安装了.NETFramework2.0SDK

我安装了Python2.7.x

我安装了VS 2012 Express

我设置了一些路径

我用参数
--msvs\u version=2010(或2012/2013…)执行了
npm install xxx

但一切都失败了

最后,我卸载了Python和.NET Framework 2.0 SDK&VS 2012,清除这些路径,启用Windows Update,安装所有基本更新,重新启动我的计算机

然后执行以下命令:

npm安装节点gyp-g
npm安装socket.io-g
npm安装浏览器同步-g

安装日志中没有错误


注意:此解决方案可能不适用于您,但对我来说

另一种方法是使用并启动NodeJS环境。在开发过程中,您可以将节点代码装载为Docker卷,从而继续从Windows更新代码,但执行它并在Linux VM中安装它的依赖项。部署时,您可能更喜欢使用Dockerfile,将节点代码复制到Docker映像中,并将其烘焙到您部署的发布映像中

如果您不想冒险更改代码的socket.io版本或其依赖项,则可能需要这种方法

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

Docker还可以非常方便地在不同版本的Node下测试部署,而不会干扰Windows计算机的开发环境(例如,用于测试NodeJS库)


感谢您提供了这个非常完整的答案。我正在安装整个装置。告诉我,如果我安装了Visual Studio 2012完整版,我需要安装VisualC++和Win SDK吗?@ USER361631的版本“<代码>节点GYP<代码>应该与VS 2012专业人员一起工作,并且,假设它安装了C++开发的特性。我不能让它工作,所以我卸载了VS 2012,我安装了VS2010,win7 64位sdk来自您的链接,但我无法安装sdk 7.1的编译器更新,因为它告诉我我没有它。当我在google上搜索win sdk 7.1时,我找到了这个链接,我尝试了第一个链接,但是安装不起作用,因为它缺少一些文件。我应该选择哪一个?如果您有2012 express desktop,您可以使用命令“npm install socket.io--msvs_version=2012”,这在Windows 8上对我很有效。我对路径变量、节点gyp等进行了正确的设置。这在Windows 10和