express中提示Error: Can't set headers after they are sent但依然能正常使用?

通过express-generator生成的项目骨架,在app.js中设置路由

app.use('/add',add);

在routes/add.js中代码为:

router.get('/', function(req, res, next) {
    res.render('add');
    next();
});

运行程序,一旦访问/add就会在控制台中报错:

Error: Can't set headers after they are sent

但程序依然能正常使用,请问是什么引起的,怎么解决?

阅读 2.4k
3 个回答

res.render已经输出渲染视图了,此时不应该再调用next,会传递到下一个方法重复输出

请求响应处理流程上有问题,你在某个地方已经结束了这个req请求,比如使用了 res.end() ,但是在后续又对同样的请求继续响应。

可以
return next()
or
return res.json()
使用return 来结束

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题