即使当我的路由到不同的文件时,express也会提供index.html
我有一个公共目录与文件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
得到服务。
你能帮我理解为什么会发生这种情况吗?
这是因为你在 app.get('/')
之前声明了app.use(express.static)
app.get('/')
。 Express按照它们声明的顺序检查路由,由于index.html
是static
中间件使用的默认文件名,因此它显示index.html
内容。
要解决这个问题,你可以在app.get('/')
app.use(express.static)
之后放置app.use(express.static)
,或者将static
第二个参数的index
属性设置为不存在的文件( false
似乎不起作用):
app.use(express.static(path.join(__dirname, 'public'), {index: '_'}));