我在NodeJS Express应用程序中的目标是拥有2个静态目录。
可以访问第一个目录(/客户端)中的每个文件。
仅可访问第二个目录(/ quest)中的.png文件。
这是我尝试做的:
app.use(/\/quest\/.*\.png/,express.static('quest')); //doesnt work
app.use(express.static('client')); //works correctly
//Note: This will actually trigger the messages
app.use(/\/quest\/.*\.png/,function(){
console.log(100);
});
但这行不通...
最佳答案
我不完全确定为什么,但是由于某种原因app.use
语法仅与路由匹配,它没有将req.url
设置为express.static
查找指定文件所需的请求URL。 app.VERB
语法更适合处理路由。
然后,由于您已经告诉express.static
查看/quest
目录,因此您需要从req.url
中删除该目录,否则它将寻找/quest
/quest/file.png
app.get('/quest/*.png', function(req, res, next) {
req.url = req.url.replace('/quest','');
next();
}, express.static('quest'));