Socket.io错误

APa*_*mer 7 node.js socket.io

我试图用Socket.io模块运行Nodejs.我已经安装了最新版本的Nodejs,我从管理员打开的命令提示符(我在Windows 7中)使用命令npm install socket.io安装了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);
  });
});
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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)
Run Code Online (Sandbox Code Playgroud)

在我的搜索中,我发现了一些关于依赖性问题的事情,以及关于socket.io和Nodejs版本之间不兼容的一些建议,但两者都在讨论旧版本的socket.io和Node Thanks.

Pav*_*ara 27

cd app
rm -rf node_modules
npm cache clean
npm install
Run Code Online (Sandbox Code Playgroud)

说明

cd app
Run Code Online (Sandbox Code Playgroud)

转到您的app目录

rm -rf node_modules
Run Code Online (Sandbox Code Playgroud)

删除当前安装的模块

npm cache clean
Run Code Online (Sandbox Code Playgroud)

删除你的npm缓存,(由此导致一些错误)

npm install
Run Code Online (Sandbox Code Playgroud)

安装你的模块package.json.如果您没有package.json,可以安装这样的特定模块

npm install <module_name>
Run Code Online (Sandbox Code Playgroud)

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

在您的情况下,如果您不知道它package.json是什么,请在继续处理nodejs之前在此处阅读.


小智 5

我不得不以下列方式解决这个问题.

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

c:\ program files \nodejs \node_modules

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

var io = require('socket.io').listen(80);
Run Code Online (Sandbox Code Playgroud)

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

c:> dir/x [输入]

然后我输入以下命令来获得" progra~1 ".

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