NodeJS Express模块:“dotfile”选项无效
使用express.static()来为静态资源提供服务时,我遇到了一个奇怪的问题。 具体来说, options
参数的dotfiles
对象不会产生预期的行为。
在明确的文件中指出:
…
express.static
基于服务静态,并负责为静态资产提供服务…
此外,它声称express.static()
的提供options
参数应该与serve-static具有相同的效果:
可选
options
对象可以具有以下属性。
- 用于提供点文件的dotfiles
option
。 可能的值是“允许”,“拒绝”和“忽略”。 默认为“忽略”。
这就是服务静态文档指出的dotfiles
选项应该规定:
'允许'点文件没有特殊处理。
“拒绝”发送一个403请求一个点文件。
'忽略'假装像dotfile不存在,并调用next()。
下面的代码是我能想到的最简洁的例子。 服务静态服务的资源看起来像预期的一样,然而express.static()
在服务相同的资源时忽略这些选项。 也就是说,尽pipe参数{dotfiles : 'allow'}
被传递给express.static()
,所有以'。'开始的资源请求 返回一个404错误。
这发生在节点版本v0.10.25,express版本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);
我期望服务静态和express.staticperformance完全一样。 有什么我失踪? 或者这是其他人遇到的问题?
您正在使用Express 2.5.8
,您正在查看的文档可能是4.x
2.5.8
没有dotfiles
选项,因为它使用不支持它的连接dotfiles
你的两个select是:
- 像你在你的例子中一样,拉动服务器
serve-static
。 - 升级您的
express
版本。2.5.8
快速接近3岁。