我试过:

app.get('/', function(req, res, next) {
    var e = new Error('error message');
    e.status = 400;
    next(e);
});

and:

app.get('/', function(req, res, next) {
    res.statusCode = 400;
    var e = new Error('error message');
    next(e);
});

但是总会出现一个500的错误代码。


当前回答

与一些(可能是较旧的?)express版本捆绑在一起的errorHandler中间件的版本似乎对状态代码进行了硬编码。另一方面,这里记录的版本:http://www.senchalabs.org/connect/errorHandler.html可以让您做您想做的事情。所以,也许可以尝试升级到最新版本的express/connect。

其他回答

与一些(可能是较旧的?)express版本捆绑在一起的errorHandler中间件的版本似乎对状态代码进行了硬编码。另一方面,这里记录的版本:http://www.senchalabs.org/connect/errorHandler.html可以让您做您想做的事情。所以,也许可以尝试升级到最新版本的express/connect。

你可以使用res.send('OMG:(', 404);只是res.send (404);

根据Express (Version 4+)文档,您可以使用:

res.status(400);
res.send('None shall pass');

http://expressjs.com/4x/api.html#res.status

< = 3.8

res.statusCode = 401;
res.send('None shall pass');

简单的一行;

res.status(404).send("Oh uh, something went wrong");

我试着

res.status(400);
res.send('message');

..但它给了我错误:

(节点:208)UnhandledPromiseRejectionWarning:错误:不能设置报头 在发送之后。

这对我很有用

res.status(400).send(yourMessage);