繁体   English   中英

Socket.io错误

[英]Socket.io error

我正在尝试使用Socket.io模块运行Nodejs。 我已经安装了最新版本的Node.js,并使用命令npm install socket.io从以管理员身份打开的命令提示符(我在Windows 7中)中安装了socket.io。尝试运行以下测试程序:

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)

在我的搜索中,我发现了一些有关依赖关系的问题,以及一些关于socket.io与Nodejs版本之间不兼容的建议,但是两者都在谈论旧版的socket.io和Node Thank。

cd app
rm -rf node_modules
npm cache clean
npm install

说明

cd app

转到您的应用目录

rm -rf node_modules

删除当前安装的模块

npm cache clean

删除您的npm缓存,(某些错误是由此引起的)

npm install

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

npm install <module_name>

npm install socket.io

在您的情况下,如果您不知道package.json是什么,请在继续阅读nodejs之前先在这里阅读。

我必须通过以下方式解决此问题。

1)我将测试程序放在以下文件夹中。

c:\\ program files \\ nodejs \\ node_modules

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

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

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

c:> dir / x [输入]

然后,键入以下命令以获取“ progra〜1 ”。

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

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

npm install socket.io -g

我遇到了同样的问题。 唯一需要做的是不在安装node.js的文件夹中运行“ npm install socket.io”,而是在启动节点服务器文件的文件夹中运行“ npm install socket.io”。 例如,我有文件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 bug尚未解决: https : //github.com/isaacs/npm/issues/1341

问题是,如果您已经在顶层node_modules目录中安装了socket.io依赖项,那么npm将不会为依赖于该模块的任何模块安装该依赖项。

遇到麻烦时,您真正要做的就是以下操作(将socket.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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM