使用邮递员时,快速中间件不会触发,但在与浏览器连接时可以正常工作

时间:2018-01-13 17:04:01

标签: javascript node.js express

我有一个简单的快速应用锅炉,镀有Express Generator。

我正在尝试运行中间件来验证JWT,但在使用邮递员进行测试时,我的中间件似乎都没有运行。

如果我从浏览器发出请求,我可以看到中间件中的日志运行正常。

我的app.js有一个简单的记录器功能,可以在所有请求上运行。

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart">
  <div id="chart_div"></div>
</div>

我的import token_verification from './middleware/token_verification'; var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var api = require('./routes/api'); var app = express(); // view engine setup app.set('views', path.join(__dirname, '../views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); app.use('/api', api); var myLogger = function (req, res, next) { console.log('LOGGED') next() } app.use(myLogger) app.use(token_verification); const LOCALHOST = process.env.PORT || 3037; app.listen(LOCALHOST, () => { console.log(`Listening on ${LOCALHOST}`); }); module.exports = app; 有一条简单的GET路线

routes/index.js

正如我所说的,当我在浏览器中访问import express from 'express'; const router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); module.exports = router; 时,我可以看到我的终端日志“LOGGED”,但是当我通过帖子向同一个URI发出GET请求时,没有记录任何内容并且没有显示任何中间件运行。

编辑:

邮差截图

PostmanScreenshot

1 个答案:

答案 0 :(得分:1)

我不知道为什么它在浏览器上运行而不是Postman(可能有一些标题 是由浏览器而不是邮递员设置的,但我不明白为什么很重要)。

但重要的是,您在路由之后定义了记录器,并且由于您的GET路由以res.render结束响应,因此中间件不会触发。

请记住,在最新版本的Express中,中间件按照它们安装在应用程序上的顺序触发。

如果您希望记录器始终触发,请重新排序:

var myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

app.use(myLogger)
app.use(token_verification);
app.use('/', index);
app.use('/api', api);