Socket.io错误

我正在尝试与Socket.io模块运行Nodejs。 我已经安装了最新版本的Nodejs,并使用命令npm install socket.io以pipe理员身份打开命令提示符(我在Windows 7中)安装了socket.io安装似乎完成,没有任何问题,但是当我尝试运行以下testing程序:

var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 

我收到这个错误:

 module.js:340 throw err; Error: Cannot find module 'socket.io' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (C:\xampp\htdocks\HTML5Game\impact\app.js:1:72) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function .Module._load (module.js:312:12) at Module.runMain (module.js:487:10) 

在我的search中,我发现了一些关于依赖关系问题的东西,以及关于socket.io和一个Nodejs版本之间不兼容的一些build议,但都是在讨论socket.io和Node Thanks的旧版本。

 cd app rm -rf node_modules npm cache clean npm install 

说明

 cd app 

转到您的应用程序目录

 rm -rf node_modules 

删除您当前安装的模块

 npm cache clean 

删除你的npmcaching,(有些错误是由此造成的)

 npm install 

安装package.json列出的模块。 如果你没有package.json ,你可以像这样安装一个特定的模块

 npm install <module_name> 

 npm install socket.io 

在你的情况下,如果你不知道package.json是什么,请继续阅读nodejs。

我必须以下面的方式解决这个问题。

1)我把一个testing程序放在下面的文件夹中。

c:\ program files \ nodejs \ node_modules

在这种情况下,源代码如下。

 var io = require('socket.io').listen(80); 

2)我指定了socket.io的完整path。

c:> dir / x [enter]

然后我input以下命令来获得“ progra〜1 ”。

 var io = require("c:/progra~1/nodejs/node_modules/socket.io").listen(80); 

如果你想在多个项目中使用一个模块或者有干净的项目目录,你可以在npm命令中添加“-g”参数。 像这样:

 npm install socket.io -g 

我有同样的问题。 你唯一需要做的就是运行“npm install socket.io”,而不是在你已经安装了node.js的文件夹中,而是在你启动节点服务器文件的文件夹中运行。 例如我有文件server.js代码`

 var io = require('socket.io').listen( io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 

`只是在同一个文件夹中运行'sudo npm install socket.io',一切都应该是好的。

为了将来的参考,对于那些想知道实际问题是什么的人来说,有npm这个两年前的错误还没有解决: https : //github.com/isaacs/npm/issues/1341

问题是,如果你的顶级node_modules目录中已经安装了socket.io的依赖项,那么npm将不会为你所依赖的任何模块安装这个依赖项。

当你遇到麻烦时,所有你必须做的事情是(使用任何模块replacesocket.io ):

 mv node_modules node_modules.bak npm install socket.io mv node_modules/socket.io node_modules.bak rmdir node_modules mv node_modules.bak node_modules 

找不到模块'socket.io'意味着你的节点模块没有安装'socket.io'模块。

只需运行以下命令:

 npm install socket.io 

如果你运行:

 npm install socket.io --save 

它会更新你的package.json文件。

我解决它:

 npm install --save socket.io 

它运行!

这就是他们如何在http://socket.io/get-started/chat/