我有一个包含文件index.html
和index-08.html
的公共目录。
使用下面的代码,我希望能够提供index-08.html
。但相反,index.html
会在localhost:3000
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res) {
res.sendFile('public/index-08.html');
});
但是,如果我将index.html
的文件名改为其他内容,请说not-index.html
,那么就会提供正确的文件index-08.html
。
你能帮我理解为什么会这样吗?
答案 0 :(得分:12)
这是因为您在 app.use(express.static)
之前声明了app.get('/')
。 Express按照声明的顺序检查路由,由于index.html
是static
中间件使用的默认文件名,因此会显示index.html
内容。
要解决此问题,您可以在app.use(express.static)
之后添加app.get('/')
,或将index
第二个参数的static
属性设置为不存在的文件(false
似乎工作):
app.use(express.static(path.join(__dirname, 'public'), {index: '_'}));