Express:在静态提供index.html时未调用索引路由

时间:2016-01-17 00:18:12

标签: node.js express

node v5 express 4.13.3

我做了什么:

当命中索引路由(“/”)时,我正在提供index.hmtl文件。然后我将它设置为要作为静态文件发送的公用文件夹。

它造成了什么问题:

现在它是静态的,当浏览器打开索引路由时不再输入我的索引路由,例如(localhost:3000 /)

问题:

这是预期的行为吗?静态地提供index.html是一个好主意吗?

1 个答案:

答案 0 :(得分:1)

  

这是预期的行为吗?

是。 Express将通过中间件列表(包括您自己的索引路由)传递请求,如果其中一个可以处理请求,它将会完成(它将不会传递给其他中间件)。

静态中间件可以处理对索引的请求(可能是因为你的公共目录中有index.html),所以请求将在那里结束而不会传递给你的处理程序。

请求传递给中间件的顺序是您可以控制的。如果您希望自己的索引处理程序获得更高的优先级,则应在静态中间件之前声明它:

app.get('/', function(req, res) {
  ...
});

app.use(express.static(...));
  

静态服务index.html是个好主意吗?

如果它是纯HTML并且在请求时没有其他任何东西需要完成,那么最好让静态中间件处理它。