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: '_'}));