我试过:

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的当前版本(3.4.0)中,你可以在调用next(err)之前修改res.statusCode:

res.statusCode = 404;
next(new Error('File not found'));

其他回答

表达已弃用的res.send(body, status)。

使用res.status(status).send(body)或res.sendStatus(status)代替

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

简单的一行;

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

在特快4.0中,他们做对了:)

res.sendStatus(statusCode)
// Sets the response HTTP status code to statusCode and send its string representation as the response body.

res.sendStatus(200); // equivalent to res.status(200).send('OK')
res.sendStatus(403); // equivalent to res.status(403).send('Forbidden')
res.sendStatus(404); // equivalent to res.status(404).send('Not Found')
res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error')

//If an unsupported status code is specified, the HTTP status is still set to statusCode and the string version of the code is sent as the response body.

res.sendStatus(2000); // equivalent to res.status(2000).send('2000')

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