Express.js在发生器内部错误时继续加载和加载

我注意到,虽然在生成器中有一个错误,express.js继续处理而不停止它。 所以,我无法find实际的错误。 我的问题是:如何停止express.js和输出错误,当发生器中有错误。

我的代码

Controller.js

const mongoose = require('mongoose'); const {wrap: async} = require('co'); const Post = require('../models/Post'); //.... there are more modules. const getPosts = async(function* (req, res) { const page = (req.query.page > 0 ? req.query.page : 1) - 1; const limit = 5; const options = { limit: limit, page: page }; const posts = yield Post.list(options); const count = yield Post.count(); console.log(posts); res.render('posts/index', { title: 'Home', posts: posts, page: page + 1, pages: Math.ceil(count / limit) }); }); app.get('/', getPosts); 

Post.js

 //.. more codes postSchema.static.list = function (options) { const criteria = options.criteria || {}; const page = options.page || 0; const limit = options.limit || 30; return this.find(criteria) .populate('user', 'name userlogin profile email') .sort({ createdAt: -1 }) .limit(limit) .skip(limit * page) .exec(); }; 

Post.js中有一个错字 postSchema.static.list应该是postSchema.statics.list (静态不是静态的)。

尝试包装yield内尝试和赶上。

 const getPosts = async(function* (req, res, next) { const page = (req.query.page > 0 ? req.query.page : 1) - 1; const limit = 5; const options = { limit: limit, page: page }; try { const posts = yield Post.list(options); const count = yield Post.count(); console.log(posts); res.render('posts/index', { title: 'Home', posts: posts, page: page + 1, pages: Math.ceil(count / limit) }); }catch(err){ next(err); } });