2017-09-29 14 views
0

我在nodejs应用程序中创建了一个中间件,我想在中间件的请求中添加头并将其发送到我的端点index.js请求。如何在nodejs中的所有http请求中使用中间件express

middleware1.js

exports.mw1 = function(req, res, next) { 
    next(); 
}; 

middleware2.js

exports.mw2 = function(req, res, next) { 
    next(); 
}; 

app.js

var mw1 = require("./middlewares/middleware1"); 
var mw2 = require("./middlewares/middleware2"); 

var combinedMiddleware = function compose(middleware) { 
    return function(req, res, next) { 
    connect 
     .apply(null, middleware.concat(next.bind(null, null))) 
     .call(null, req, res); 
    }; 
}; 

app.use(combinedMiddleware([auth, audit])); 
app.use("/", index); 

index.js

var express = require("express"); 
var router = express.Router(); 

router.get("/", function(req, res) { 
    res.send("Welcome!!"); 
}); 

module.exports = router; 

当我试图将其称为http://localhost:3000/时,它将返回404 Not Found。相反,它应该然后重定向请求都中间件到index.js

GET/404 8.700 ms - 139 

有谁知道什么是错呢?

回答

2

也许我失去了一些东西,但你为什么不这样做:

var mw1 = require("./middlewares/middleware1"); 
var mw2 = require("./middlewares/middleware2"); 

app.use(mw1, mw2); 
app.use("/", index); 

,改变你的中间件:

module.exports = function(req, res, next) { 
    next(); 
}; 
+0

我得到'抛出新的TypeError('Router.use( )需要中间件功能,但得到'+ gettype(fn));' –

+0

您只需要导出中间件文件中的函数:'exports = function(...' – winseybash

+0

'module.exports'如何与'exports .mw2'或'exports.mw1'? –

相关问题