Express.static() を使用して静的リソースを提供するときに、私は奇妙なことに遭遇しています。具体的には、引数のdotfiles
オブジェクトが期待される動作を生成していません。options
エクスプレスドキュメント内では、次のように述べられています。
...
express.static
serve-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 がまったく同じように動作することを期待しています。足りないものはありますか?または、これは他の誰かが遭遇した問題ですか?