即使我的路由指向另一个文件,express也会提供index.html

时间:2014-08-06 17:40:08

标签: node.js express routing

我有一个包含文件index.htmlindex-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

你能帮我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:12)

这是因为您在 app.use(express.static)之前声明了app.get('/') 。 Express按照声明的顺序检查路由,由于index.htmlstatic中间件使用的默认文件名,因此会显示index.html内容。

要解决此问题,您可以在app.use(express.static)之后添加app.get('/'),或将index第二个参数的static属性设置为不存在的文件(false似乎工作):

app.use(express.static(path.join(__dirname, 'public'), {index: '_'}));