表示将默认文件扩展名与静态内容请求相关联的常用方法是什么?

时间:2012-10-20 10:40:13

标签: node.js express

我在我的后端使用Express(v3),它也提供我的静态内容,如下所示:

app.use(allowCrossDomain);
app.use(disableETag);
app.use(app.router);
app.use(express["static"](webRootDir));
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
app.set('view engine', 'html');
app.set('views', webRootDir);
app.engine("html", handlebarsEngine);

所以,请求" /customers.html"由express.static中间件提供服务。但是,请求" / customers"不起作用,因为没有"客户"文件,也没有这样的动态内容路由。

当然,我可以提供文件" customers.html"遵循Serve Static Files on a Dynamic Route using Express中解释的路径从动态路线开始。

然而,我认为这是一种矫枉过正,这类事情应该可以通过默认文件扩展名进行配置,但我无法找到。有人能告诉我吗?

1 个答案:

答案 0 :(得分:4)

express static基于serve-static,因此您可以使用extensions属性集传递options对象。以下为例:

app.use(express.static(webRootDir, {'extensions': ['html']}));

这设置表达式,以便如果找不到文件,例如/customers,它会尝试将每个扩展名附加到路径,因此在您的情况下/customers.html

请参阅https://github.com/expressjs/serve-static#serve-files-with-vanilla-nodejs-http-server

上的文档
相关问题