0

我希望能够让 Express 将多个目录(不仅仅是一个)视为“静态”——也就是说,如果文件在那里,则提供它。

Connect 的 static() 模块似乎是为那些想要在服务器根目录中创建特定目录中的文件的人准备的。然而,这不是我想要的。我所追求的最终是这样的:

  • GET /modules/MODULE1 -> 返回 modules/MODULE1/public 中的文件
  • GET /modules/MODULE2 -> 返回 modules/MODULE2/public 中的文件
  • GET /modules/MODULE3 -> 返回 modules/MODULE3/public 中的文件

我正在查看 的来源static,它依次使用send,它又定义了SendStream,它直接从请求中获取文件路径(这不是我想要的)。

有没有简单的方法可以做到这一点?

默克。

4

2 回答 2

1

怎么了

app.use('/modules/MODULE1', express.static('modules/MODULE1/public'))

每个模块?

于 2012-09-02T06:33:48.807 回答
0

答案在这里:

https://groups.google.com/forum/?fromgroups=#!topic/express-js/kK9muR0mjR4

基本上:

var st = express.static(
    __dirname + app.set('path.static'), 
    { maxAge : app.set('static.expiry') }
);

app.get(/^\/static\/(v.+?\/)?(.+$)/, function (req, res, next) {
  req.url = req.params[1];
  st(req, res, next);
});

基本上,由于静态考虑 req.url,因此只需对其进行破解,以便在/如果路径匹配时“看起来正确”。

我问 TJ 是否会将其添加为选项,他(正确地)回答:

这不是 send() 应该做的事情,您已经可以使用 connect/express 和几个 static() 中间件轻松做到这一点,您只需要使用 send() 做同样的事情,但需要更多手动操作

https://github.com/visionmedia/send/issues/10#issuecomment-8225096

于 2012-09-03T03:54:36.517 回答