表达 errorHandler()
Express errorHandler()
有一个简单的应用程序
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 文档中,我找不到像我这样的示例。
UPD:使用 express 3.3.8 和 node js 5.2.0 npm 3.5.2
express.errorHandler
在 Express 4 中被弃用,现在有一个名为 errorhandler
that you should use instead. Also, send.end()
cannot be used to just send a status code, you have to use sendStatus()
or 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);
}
});
有一个简单的应用程序
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 文档中,我找不到像我这样的示例。
UPD:使用 express 3.3.8 和 node js 5.2.0 npm 3.5.2
express.errorHandler
在 Express 4 中被弃用,现在有一个名为 errorhandler
that you should use instead. Also, send.end()
cannot be used to just send a status code, you have to use sendStatus()
or 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);
}
});