1

Express.static() を使用して静的リソースを提供するときに、私は奇妙なことに遭遇しています。具体的には、引数のdotfilesオブジェクトが期待される動作を生成していません。options

エクスプレスドキュメント内では、次のように述べられています。

... express.staticserve-static に基づいており、静的アセットの提供を担当しています...

さらに、options引数を指定するexpress.static()と、serve-static と同じ効果が得られるはずであると主張しています。

オプションのoptionsオブジェクトは、次のプロパティを持つことができます。

  • ドットファイルoptionを提供するためのドットファイル。可能な値は「許可」、「拒否」、および「無視」です。デフォルトは「無視」です。

これは、serve-static のドキュメントに、dotfilesオプションが指定する必要があると記載されているものです。

  • 'allow' ドットファイルに対する特別な処理はありません。

  • 'deny' ドットファイルの要求に対して 403 を送信します。

  • 'ignore' ドットファイルが存在しないふりをして、next() を呼び出します。

私が思いつく最も簡潔な例は、以下のコードです。serve-static によって提供されるリソースは期待どおりに動作するように見えますがexpress.static()、同じリソースを提供する場合はオプションを無視します。つまり、引数{dotfiles : 'allow'}が に渡されているという事実にもかかわらず、 express.static()「.」で始まるすべてのリソース要求。404 エラーを返します。

これは、ubuntu サーバー 14.04.1 LTS で実行されているノード バージョン v0.10.25、エクスプレス バージョン 2.5.8 で発生しています。

var express = require('express');
var app = module.exports = express.createServer();
var finalhandler = require('finalhandler');
var http = require('http');
var serveStatic = require('serve-static');

app.use('/', express.static('public', {
  dotfiles : 'allow'
}));

app.listen(3001);

var serve = serveStatic('public', {
  dotfiles : 'allow'
});

var server = http.createServer(function(req, res) {
  serve(req, res, finalhandler(req, res))
})

server.listen(3002);

serve-static と express.static がまったく同じように動作することを期待しています。足りないものはありますか?または、これは他の誰かが遭遇した問題ですか?

4

1 に答える 1

1

あなたは Express を使用して2.5.8おり、あなたが見ているドキュメントはおそらく4.x. 2.5.8サポートしていない connect を使用するため、dotfilesオプションはありません1.x。2 つのオプションは次のいずれかです。

  1. serve-staticあなたの例でやっているように引っ張ってください。
  2. バージョンをアップグレードしてくださいexpress2.5.8もうすぐ3歳。
于 2015-01-30T06:56:03.887 に答える