即使当我的路由到不同的文件时,express也会提供index.html

我有一个公共目录与文件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得到服务。

你能帮我理解为什么会发生这种情况吗?

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

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

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