0

Expressが複数のディレクトリ(1つだけではない)を「静的」として処理できるようにしたいと思います。つまり、ファイルがそこにある場合は、それを提供します。

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);
});

基本的に、Staticはreq.urlを考慮しているため、パスが一致した場合に「正しく見える」ようにハッキングする必要があります。

私はTJにそれをオプションとして追加するかどうか尋ねました、彼は(正しく)答えました:

これはsend()が行うべきことではありません。これは、いくつかのstatic()ミドルウェアを使用したconnect / expressですでに簡単に行うことができます。同じことを行う必要がありますが、send()を使用してより手動で行う必要があります。

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

于 2012-09-03T03:54:36.517 に答える