我正在运行最新的快递(截至写作时为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.
我不确定为什么会这样。我是否错误地实现了静态中间件之前的中间件?
答案 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')));