首页 > 解决方案 > 如何将 express.static() 与基于 URL 的目录路径一起使用?

问题描述

我正在制作一项涉及用户获得免费子域的系统的服务,例如archiebaer.blahblahblah.demo,我有一个功能来获取siteconf()包含名为主题的密钥的站点配置文件()。我想archiebaer.blahblahblah.demo/theme-static/style.css用来express.static()提供基于该主题键的文件夹。

例如。app.get('/theme-static', express.static("themes/ABC/theme-static"));其中 ABC 是主题名称。


示例场景:johnsmith并且archiebaer都是用户。John 的配置文件看起来像这样:{theme:'retro'},而 Archie 的配置文件是{theme:'slate'}. 您可以使用siteconf(req). 当我访问/theme-static/style.cssArchie 的网站时,我应该得到文件~/projectfolder/themes/slate/style.css,并且在 John's: 上~/projectfolder/themes/retro/style.css


我假设代码看起来像这样:

app.get('/theme-static', function (req, res) {
   res.send(express.static('themes/' + siteconf(req).theme + '/theme-static/'));
});

标签: node.jsexpressurlstatic

解决方案


你可以简单地使用类似的东西:

app.use("/theme-static", express.static(path.join(__dirname, "pathToFolder")));

如果文件不存在,express 将为您处理错误。


推荐阅读