如何使中间件响应每个请求

时间:2018-01-08 05:14:44

标签: node.js express middleware

我正在 { 'Channel_F': 'V', 'Channel_J': 'V', 'Channel_E': 'P', 'Channel_G': 'V', 'Channel_D': 'P', 'Channel_B': 'S', 'Channel_I': 'V', 'Channel_A': 'S', 'Channel_C': 'P', 'Channel_H': 'V' } 中测试middleware,但我遇到了问题。

在我的第二行,我使用express来调用testOne和testTwo。当我访问我的root /浏览器时,这两个app.use函数都会运行。但是,如果我访问一个随机的静态文件,例如image.png或about.htm,他们就不会开火了。无论我要求什么文件,如何让它们关闭?非常感谢您的帮助!

middleware

1 个答案:

答案 0 :(得分:1)

所有中间件都必须调用next()才能继续路由到下一个路由处理程序。

app.use(testOne, testTwo);

function testOne(request, response, next) {
    console.log('testOne ran');
    next();
}

function testTwo(request, response, next) {
    console.log('testTwo ran');
    next();
}

app.use(express.static(path.join(__dirname, 'public')));

如果你不打电话给next(),那么这条路线就会停滞不前,什么都不做(直到它可能最终超时)。

此外,如果您希望在所有请求上触发这些中间件,那么您需要先将它们放在可能实际处理请求的其他请求处理程序之前,例如express.static()