使用express.static()来提供静态资源时,我遇到了一个奇怪的问题。具体而言,dotfiles
参数的options
对象不会产生预期的行为。
在快递文件中声明:
...
express.static
基于serve-static,负责提供静态资产......
此外,它声称向options
提供express.static()
参数应与serve-static具有相同的效果:
可选的
options
对象可以具有以下属性。
- dotfiles
option
用于提供dotfiles。可能的值是“允许”,“拒绝”和“忽略”;默认为“忽略”。
这是serve-static文档声明dotfiles
选项应该指示的内容:
'allow'对dotfiles没有特殊处理。
'拒绝'为任何点文件请求发送403。
'忽略'假装像dotfile不存在并调用next()。
我能提出的最简洁的例子是下面的代码。似乎serve-static服务的资源按预期运行,但是express.static()
在提供相同资源时忽略了这些选项。也就是说,尽管参数{dotfiles : 'allow'}
被传递给express.static()
,但所有资源请求都以'。'开头。返回404错误。
这发生在节点版本v0.10.25,express version 2.5.8上,在ubuntu服务器14.04.1 LTS上运行。
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的行为完全相同。有什么我想念的吗?或者这是其他人遇到的问题?
答案 0 :(得分:1)
您使用的是Express 2.5.8
,您正在查看的文档可能是4.x
。 2.5.8
没有dotfiles
选项,因为它使用不支持它的连接1.x
。您的两个选项是:
serve-static
。express
版本。 2.5.8
很快就要接近3岁了。