【问题标题】:ExpressJS Serve static files within request functionExpressJS 在请求函数中提供静态文件
【发布时间】:2017-12-27 23:39:07
【问题描述】:

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

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(),所以这段代码什么也不做。在stackoverflow.com/questions/11569181/… 上查看答案 - 您正在尝试做的事情非常相似。
  • 像魅力一样工作!请回答,以便我接受,谢谢!

标签: node.js express express-session


【解决方案1】:

中间件函数(.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'});
    } 
});

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2015-03-27
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多