最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin9浏览0评论

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

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

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

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'});
    } 
});
发布评论

评论列表(0)

  1. 暂无评论