繁体   English   中英

ExpressJS 在请求函数中提供静态文件

[英]ExpressJS Serve static files within request function

我目前正在提供这样的静态文件:

app.use('/javascripts', express.static(join(__dirname + '/assets/javascripts')));

它按预期工作。

我想做的是使用用户会话根据会话提供静态文件。 我试过这个:

app.use('/javascripts', (req: Request, res: Response, next) =>{
    if(req.session.auth){
        express.static(join(__dirname + '/auth/javascripts'))
    } else{
        express.static(join(__dirname + '/assets/javascripts'))
    }
});

但它不提供文件。 有人可以解释为什么它不起作用以及我如何实现我想要做的事情吗?

中间件函数( .use()的第二个参数)应该处理请求并调用next() ,所以这段代码什么都不做。

您需要的是根据req.session.auth重定向到正确的静态目录的动态路由(而不是中间件):

app.get('/javascripts/*', function(req, res){
    if(req.session.auth){
        res.sendfile(req.params[0], {root: './auth/javascripts'});
    } else {
        res.sendfile(req.params[0], {root: './assets/javascripts'});
    } 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM