我在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'));

08-04 14:45