无法收听节点应用

时间:2014-03-29 02:56:24

标签: javascript node.js express socket.io

我尝试使用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');
});

1 个答案:

答案 0 :(得分:1)

你说的问题是问题不在于输出所说的问题,但它们都是同样的问题。

listen()不属于http,但对象ceateServer()返回(类型为http.Server)。这也是socket.io位的问题,但是,它们都期望实际的服务器对象。我认为你想要的是:

var server = http.createServer(app);
io.listen(server);
server.listen(3000);

通过查看注释掉的代码,我可以看出为什么这可能会混淆。