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是:

  1. 像你在你的例子中一样,拉动服务器serve-static
  2. 升级您的express版本。 2.5.8快速接近3岁。
Interesting Posts