Node.js JSON响应并在Express中调用next()

Node.js JSON响应并在Express中调用next(),node.js,express,Node.js,Express,是否可以使用Express 4向前端发送一个JSON响应,指出存在错误,并在Express中间件内部调用next(err),以便服务器也可以处理该错误?或者这些电话是完全互斥的 我目前的假设是,您可以这样做: app.get('/', function(req, res, next) { res.json({ error : true }); }); app.get('/', function(req, res, next) { next(new Error('here goes th

是否可以使用Express 4向前端发送一个JSON响应,指出存在错误,并在Express中间件内部调用next(err),以便服务器也可以处理该错误?或者这些电话是完全互斥的

我目前的假设是,您可以这样做:

app.get('/', function(req, res, next) {
  res.json({ error : true });
});
app.get('/', function(req, res, next) {
  next(new Error('here goes the error message');
});
你可以这样做:

app.get('/', function(req, res, next) {
  res.json({ error : true });
});
app.get('/', function(req, res, next) {
  next(new Error('here goes the error message');
});
但你不能这么做

app.get('/', function(req, res, next) {
  res.json({ error : true });
  next(new Error('here goes the error message');
});
你不能这样做:

app.get('/', function(req, res, next) {
  next(new Error('here goes the error message');
  res.json({ error : true });
});

它们并不是相互排斥的。例如(我用路由处理程序代替中间件进行演示,但两者的原理是相同的):


您可以检查错误处理程序中的
res.headersSent
,以确保已发送响应(如果未发送,则错误处理程序应自行发送响应)。

您可以包含一些示例代码吗?@kdbanman,比如什么?这就像发送json,然后调用
next
。你所说的“这样服务器也可以处理错误”是什么意思?@DaveNewton这是一个关于函数调用兼容性的问题,所以最好包含能准确显示其使用方法的代码?它消除了歧义。这使帮助更容易。这表明已经投入了一些努力。(这是一个合法的问题——你有很多代表和元活动,而我没有。)我添加了一些代码作为示例,但如果@robertklep是正确的,那么这将回答问题。酷,让我来试一试,在我认为它们是排他的最长时间内