有一个简单的应用
var express = require('express');
var http = require('http');
var path=require('path');
var config = require('config');
var log = require('libs/log.js')(module);
var app = express();
app.set("port",config.port);
http.createServer(app).listen(app.get('port'), function(){
log.info('Express server listening on port ' + config.port);
});
app.use(function(req,res,next){
if(req.url=='/dn'){
next(new Error('lol'));
}else next();
});
app.use(function(err,req,res,next){
if(app.get('env')=='development'){
var errorHandler = app.use(express.errorHandler());
errorHandler(err,req,res,next);
}else{
res.end(401);
}
});
但是有这样的页面错误 screen
我做错了什么?在Express doc中我找不到像我这样的例子。
UPD:使用express 3.3.8和node js 5.2.0 npm 3.5.2
答案 0 :(得分:1)
express.errorHandler
,现在我们应该使用一个名为errorhandler
的独立包。另外,send.end()
不能用于发送状态代码,您必须使用sendStatus()
或status(...).end()
。
所以你的代码会变成这样:
var errorhandler = require('errorhandler')();
...
app.use(function(err, req, res, next) {
if (app.get('env') === 'development') {
return errorhandler(err, req, res, next);
} else {
res.sendStatus(401);
}
});
对于Express 3,代码如下所示:
var errorHandler = express.errorHandler();
...
app.use(function(err, req, res, next) {
if (app.get('env') === 'development') {
return errorHandler(err, req, res, next);
} else {
res.send(401);
}
});