我有一個應用程序生成與快速發生器,與bin/www文件和app.js文件。在app.js中,我添加了以下內容:節點/ Express 4中間件不工作
app.use(function(req, res, next){
console.log("--------new middleware");
next();
});
但它根本不調用中間件。應用程序的其餘部分工作正常,我已確認服務器正在運行並接收請求。
這裏是app.js:
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 session = require('express-session');
var passport = require('passport');
var routes = require('./routes/index');
var users = require('./routes/users');
//很多航線
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
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(session({ secret: 'separation anxiety' }));
app.use(passport.initialize());
app.use(passport.session());
app.use('/', routes);
app.use('/users', users);
//很多路徑
app.use(function(req, res, next){
console.log("--------new middleware");
next();
});
// app.use(auth.isLoggedIn);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
您的中間件功能簽名錯誤。沒有'err'參數。請參閱http://expressjs.com/en/4x/api.html#app.use – jfriend00
根據我上面的帖子,我試了一下也沒有(..我也試過這沒有err在前面)。我應該更清楚。 – Mankind1023
您的服務器是否正在運行?你有沒有收到任何要求?如果'app.get('/',...)'甚至不起作用,那麼你的服務器可能沒有運行或者沒有正確的初始化。你的第二個代碼塊是正確的,並且如果其他事情正確完成,它將工作。所以,如果第二個代碼塊不起作用,那麼您的代碼中還有其他錯誤,您還沒有透露。我們將不得不看你的代碼的其餘部分,以知道還有什麼錯誤。 – jfriend00