NodeJS Express 模块:'dotfile' 选项无效

NodeJS Express Module: 'dotfile' options no working

我 运行 在使用 express.static() 提供静态资源时感到奇怪。具体来说,options 参数的 dotfiles 对象没有产生预期的行为。

在快速文档中它指出:

...express.static is based on serve-static, and is responsible for serving the static assets...

此外,它声称向 express.static() 提供 options 参数应该与 serve-static:

具有相同的效果

The optional options object can have the following properties.

  • dotfiles option for serving dotfiles. Possible values are "allow", "deny", and "ignore"; defaults to "ignore".

这就是服务静态文档说明 dotfiles 选项应该指示的内容:

  • 'allow' No special treatment for dotfiles.

  • 'deny' Send a 403 for any request for a dotfile.

  • 'ignore' Pretend like the dotfile does not exist and call next().

我能想出的最简洁的例子是下面的代码。 serve-static 提供的资源似乎按预期运行,但是 express.static() 在提供相同资源时会忽略这些选项。也就是说,尽管参数 {dotfiles : 'allow'} 被传递给 express.static(),但所有对资源的请求都以“.”开头。 return 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);

我希望 serve-static 和 express.static 的行为完全相同。有什么我想念的吗?或者这是其他人遇到的问题吗?

您正在使用 Express 2.5.8,您正在查看的文档可能适用于 4.x2.5.8 没有 dotfiles 选项,因为它使用不支持它的连接 1.x。您的两个选择是:

  1. 像您在示例中所做的那样拉入 serve-static
  2. 升级您的 express 版本。 2.5.8快3岁了。