7

我正在尝试使用 Socket.io 模块运行 Nodejs。我已经安装了最新版本的 Nodejs,并使用命令 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 Thanks。

4

7 回答 7

27
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

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

于 2012-06-29T18:02:35.763 回答
5

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

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

c:\程序文件\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);
于 2012-11-07T11:53:52.497 回答
4

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

npm install socket.io -g
于 2013-01-03T11:22:36.430 回答
3

我有同样的问题。您唯一需要做的就是不在您安装 node.js 的文件夹中运行“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' ,一切都会好起来的。

于 2012-11-12T09:48:00.250 回答
2

为了将来参考,对于那些想知道真正问题是什么的人,有一个两年前的 npm 错误尚未解决: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
于 2013-03-07T17:14:56.993 回答
1

找不到模块“socket.io”意味着您的节点模块中没有安装“socket.io”模块。

只需运行以下命令:

npm install socket.io

如果你运行:

npm install socket.io --save

它将更新您的 package.json 文件。

于 2014-10-28T19:27:05.690 回答
0

我修复它:

npm install --save socket.io

它运行!

这就是他们在http://socket.io/get-started/chat/中的做法

于 2014-05-30T19:54:07.303 回答