为啥这个简单的socket.io例子总是报找不到一个test的module?
发布于 10 年前 作者 hwoarangzk 5844 次预览 最后一次回复是 10 年前 来自 问答
我的demo放在d:\projects\socket下的,npm install socket.io没问题,然后copy了socket.io官网的简单例子:
<pre>
var server = require(‘http’).createServer();
var io = require(‘socket.io’)(server);
io.on(‘connection’, function(socket){
socket.on(‘event’, function(data){});
socket.on(‘disconnect’, function(){});
});
server.listen(3000);
</pre>
然后执行的时候,总是报Error: Cannot find module 'D:\projects\socket\test'。没明白这个test是哪儿来的。。。
10 回复
你怎么启动程序的?
@garfieldzf8 以上代码保存为
index.js,然后我在d:\projects\socket下,直接node index的堆栈信息发上来看看,里面应该有吧
奇怪的,还是同样的代码,现在没有报错,但是浏览器里输入
http://localhost:3000,页面就一直没反应,控制台也没任何信息输出… 没错啊,你这个server 又没什么中间件,也没有处理 http 请求,就一空壳,哪会有什么反应!
在27行的位置,插入
把 views/index.jade 改成:
启动服务器:
再试试
server.listen(3000,function(){ console.log(‘server begin…’); })
加上这句代码,看看服务器起来没?
我再试试,多谢大家
@klesh 之前我的例子,我在浏览器输入地址后按回车,浏览器的loading图标一直在转,停不下来,就算我在
connection监听函数里加console.log,控制台也没任何输出的@hwoarangzk
你浏览器按下按钮跟 socket.io 是没任何关系的, 相应的是 server 对象进行处理的。你在createServer 时根本没有传任何处理函数进去,浏览器请求时当然就是转个不停了。
socket.io 原理上是附加到 server 对象里面,当检测到 socket.io 的请求再接管。你只有在客户端,用 socket.io client 对象建立连接才是 socker.io 的管辖范围
原来如此,谢谢!我以为官网上最简单的示例会有点啥东西出来的