在express.static之前具有中间件功能不起作用 [英] Having a middleware function before express.static doesnt work

查看:74
本文介绍了在express.static之前具有中间件功能不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行最新的Express(截至撰写时为4.1.1).它具有此中间件,用于提供静态文件.

I am running the latest express (4.1.1 as of writing). It has this middleware included to serve static files.

因此,包含此中间件的常用代码是:

So the usual code to include this middleware is:

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

很好,一切正常.但是,如果我尝试在此之前加入中间件,例如:

And great that all works fine. But if I try to include a middleware before that, eg:

app.use(function(req,res,next){                    
    next();                                          
}, express.static(path.join(__dirname, 'public')));

静态服务中间件现在为我提供404.

The serve-static middleware now gives me 404s.

我不确定为什么会这样.我是否错误地实现了在静态中间件之前的中间件?

I am not sure why this is happening. Did I implement the middleware that goes before the static middleware incorrectly?

推荐答案

您对 app.use() 不正确.从文档:

app.use([path],function)
使用给定的中间件函数,以及可选的挂载 path ,默认为"/".

app.use([path], function)
Use the given middleware function, with optional mount path, defaulting to "/".

您会注意到, app.use 接受可选路径和一个函数,而不是多个函数.因此,您应该使用自己的 app.use 调用定义每个中间件,如下所示:

You will notice that app.use accepts an optional path and a function, not multiple functions. Therefore, you should be defining each middleware with its own app.use call, as seen below:

app.use(function(req,res,next){                    
    next();                                          
});
app.use(express.static(path.join(__dirname, 'public')));

这篇关于在express.static之前具有中间件功能不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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