在express.static之前有一个中间件功能不起作用

时间:2014-05-04 14:02:36

标签: node.js express

我正在运行最新的快递(截至写作时为4.1.1)。它包含此middleware来提供静态文件。

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

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

很棒,一切正常。但如果我在此之前尝试包含中间件,例如:

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

服务静态中间件现在给了我404.

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

1 个答案:

答案 0 :(得分:2)

您对app.use()的使用不正确。来自documentation

  

<强> app.use([path], function)
  使用给定的中间件function和可选的挂载path,默认为&#34; /&#34;。

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

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