我在我的后端使用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中解释的路径从动态路线开始。
然而,我认为这是一种矫枉过正,这类事情应该可以通过默认文件扩展名进行配置,但我无法找到。有人能告诉我吗?
答案 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
上的文档