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

Node.js 即使我的路由到不同的文件,express也会提供index.html,node.js,express,routing,Node.js,Express,Routing,我有一个公共目录,里面有文件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'); }); 但是,如果我将inde

我有一个公共目录,里面有文件
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
的文件名更改为其他名称,比如说
而不是index.html
,那么正确的文件
index-08.html
就会得到服务


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

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

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


Express 4是否更改了这些内容?我正在尝试发送一个404,用于所有HTML页面请求,但运气不太好。我在我的代码中看不到任何
express.static
。同意。app.use()的最新规范需要一个函数作为第二个参数。它是我的热重载程序,但原理相同。任何中间件都可能导致此问题,因此如果express.static不是它,请检查其他中间件。
app.use(express.static(path.join(__dirname, 'public'), {index: '_'}));