表示不调用全球中间件 [英] express global middleware not being called

查看:70
本文介绍了表示不调用全球中间件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,我正在按照文档以及该主题的每个论坛帖子中所述配置我的全局中间件功能,但并未被调用.有人看到我在做什么错吗?表示3.2.5.在日志输出中,我看到以下内容:

As far as I can tell I'm configuring my global middleware function as described in the docs and in every forum post on the subject, but it is not being called. Does anyone see what I'm doing wrong? express 3.2.5. In the log output I see the following:

Express server listening on port 9000
inside route
GET / 200 7ms - 2b

我希望看到内部中间件",然后是内部路由".相反,我只看到内部路线".

I expect to see "inside middleware", then "inside route". Instead, I just see "inside route".

代码:

var express = require('express'), http=require('http'), path=require('path');

var app = express();

app.enable('trust proxy');

app.set('port', process.env.PORT || 9000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('layout', 'layout');

app.use(require('express-ejs-layouts'));
app.use(express.favicon(__dirname + '/public/images/favicon.ico')); 
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride())
app.use(express.cookieParser('kfiwknks'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

if ('development' == app.get('env')) {
  app.use(express.errorHandler());
} else {
  app.use(function(err, req, res, next){
    console.error (error);
    res.send (500, "Internal server error");
  });
}

app.use (function (req, res, next) {
  console.log ("inside middleware");
  next();
});

app.get ("/", function (req, res) {
  console.log ("inside route");
  res.send(200);
});

http.createServer(app).listen(app.get('port'), function() {
  console.log('Express server listening on port ' + app.get('port'));
});

此相关帖子:

>未调用Express 3错误中间件

特定于错误处理中间件.我的是一种香草中间件.

is specific to error handling middleware. Mine is a vanilla middleware.

推荐答案

在使用app.router之前,应先放置中间件.

You should put your middleware before you use app.router.

...
app.use (function (req, res, next) {
  console.log ("inside middleware");
  next();
});
...
app.use(app.router);

这篇关于表示不调用全球中间件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆