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'});
}
});
我目前正在提供这样的静态文件:
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'});
}
});