最近在学习express,模仿书上做了blog的例子。但是使用这段路由代码会报错:cannot send header after send(大概是这个意思)。我查了一下,有资料说这个bug原因是在send或者reditrct之后又设置header信息了。但是我查了一下所有send或者redirect之后都return了,不知道为何还会出现这个问题。恳请大家帮我答疑解惑 。 //这是设置路由的代码 module.exports = function(app) { app.use(function(req,res,next){ res.locals.showTests = app.get(‘env’) !== ‘production’ && req.query.test === ‘1’; next(); }) app.get(’/’, function(req, res) { return res.redirect(’/posts’); }); app.use(’/signup’, require(’./signup’)); app.use(’/signin’, require(’./signin’)); app.use(’/signout’, require(’./signout’)); app.use(’/posts’, require(’./posts’)); //下面两个处理异常的路由一加上就报错,不加就不报错 //404 catch-all 处理器 app.use(function(req, res, next) { res.status(404); res.render(‘404’); return; }) //500 错误中间件 app.use(function(err,req, res, next) { console.log(err.stack); res.status(500); res.render(‘500’); return; }) }; //处理posts页的路由 router.get(’/’,function(req,res,next){ var author = req.query.author; console.log(req.ip); PostModel.getPosts(author) .then(function(posts){ res.render(‘posts’,{ posts: posts, title: ‘主页’, pageTestScript: ‘qa/tests-posts.js’ }); }) .catch(next);
})这是请求posts页面后的报错