我正在运行最新的express(截至撰写本文时为4.1.1)。它包含了这个中间件来提供静态文件。
所以通常包含这个中间件的代码是:app.use(express.static(path.join(__dirname, 'public')));
一切都很好。但是如果我在此之前尝试包含中间件,例如:
app.use(function(req,res,next){
next();
}, express.static(path.join(__dirname, 'public')));
服务静态中间件现在给我404。
我不确定为什么会发生这种情况。我是否错误地实现了在静态中间件之前的中间件?
您对app.use()
的使用不正确。来自文档:
app.use([path], function)
使用给定的中间件function
,可选挂载path
,默认为"/"。
您将注意到app.use
接受一个可选路径和一个函数,而不是多个函数。因此,您应该用自己的app.use
调用定义每个中间件,如下所示:
app.use(function(req,res,next){
next();
});
app.use(express.static(path.join(__dirname, 'public')));