我尝试使用express和socket.io创建一个带节点的应用,但我遇到了问题。在终端中,当我键入节点app.js时,它表示" TypeError:对象#没有方法' listen'"苦苦挣扎io.listen(http);
这里错了什么?
错误
/Users/peter/Dropbox/testapp/app.js:15
http.listen(3000);
^
TypeError: Object #<Object> has no method 'listen'
代码
// express module
var express = require('express'),
// http module
//http = require('http').createServer(app).listen(3001),
http = require('http'),
// socket.io module
//io = require('socket.io').listen(http);
io = require('socket.io'),
// node onject
app = express();
// create server
http.createServer(app);
//listen to server on port 3000
http.listen(3000);
// listen to http server object
io.listen(http);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
答案 0 :(得分:1)
你说的问题是问题不在于输出所说的问题,但它们都是同样的问题。
listen()
不属于http
,但对象ceateServer()
返回(类型为http.Server
)。这也是socket.io位的问题,但是,它们都期望实际的服务器对象。我认为你想要的是:
var server = http.createServer(app);
io.listen(server);
server.listen(3000);
通过查看注释掉的代码,我可以看出为什么这可能会混淆。