TypeError:当你屈服于app.listen()时,你可能只会产生一个函数,promise,generator ...

时间:2017-02-10 22:40:22

标签: javascript node.js express generator

我不知道这个生成器函数有什么问题:

var dbUrl = 'mongodb://localhost:27017/voyanta';
var db;
var server;

co(function*() {
    // Use connect method to connect to the Server
    db = yield MongoClient.connect(dbUrl);
    server = yield app.listen(3000);
    console.log('Connected to database. Listening on port 3000.');

}).catch(function(err) {
    console.log(err.stack);
});

对我来说看起来很完美,但是行“server = yield app.listen(3000);”创建错误:“类型错误:您可能只生成函数,promise,生成器,数组或对象,但传递了以下对象:”[object Object]“。

1 个答案:

答案 0 :(得分:2)

TreeSet没有回复承诺。

而不是:

app.listen(3000)

你可以这样做:

server = yield app.listen(3000);

或更好:

server = app.listen(3000);
yield new Promise(res => server.on('listening', res));

使用此示例进行测试:

server = app.listen(3000);
yield new Promise((res, rej) => {
    server.on('listening', res);
    server.on('error', rej);
});