如何在单独的路由中捕获响应错误/消息?

时间:2017-09-17 08:26:42

标签: node.js api middleware

我只想从中间件函数中捕获响应错误,如果我按如下方式编写代码,它就可以工作:

var express = require('express');
var expressValidator = require('express-validator');
var app = express();
var bodyParser = require('body-parser');
var router = require('./routes');

//monk.mongoList();
app.use(bodyParser.urlencoded({extented:true}));
app.use(bodyParser.json());
app.use(expressValidator([]));

var port = process.env.PORT || 8978;


router.get('/',function(req,res,next) {
  var error = Error('Article is not found');
  next(error.message);
 return res.send("Hello World!");
});

app.use(function(err,req,res,next) {
  console.log(err + "TET");
})


app.listen(port);

但我想分开以下代码:

app.use(function(err,req,res,next) {
  console.log(err + "TET");
})

并按如下方式使用:

app.js

var express = require('express');
var expressValidator = require('express-validator');
var app = express();
var bodyParser = require('body-parser');
var router = require('./routes');

//monk.mongoList();
app.use(bodyParser.urlencoded({extented:true}));
app.use(bodyParser.json());
app.use(expressValidator([]));

var port = process.env.PORT || 8978;


var test = require('./util/test')

app.use(test.logger);


app.use('/',router);


app.listen(port);
console.log('test node API ' + port ); 

UTIL / test.js

module.exports.logger = function (err, req, res, next) {
  console.log('LOGGED')
  next()
}

/routes/index.js 编辑:我刚编辑了/routes/index.js文件,使其更简单

var express = require('express');
var router = express.Router();
var url = require('url');



router.get('/api', function(req, res, next) {

    var err = "this is error";
    var error = Error (err)
    var data = { data: "Succuss"}
    if (err) {
      next(error.message)
      res.json({message:err})
    }else {
      res.json(data);
    }
});

module.exports = router;

添加上述代码时,控制台中不会显示任何内容。

0 个答案:

没有答案