nodeJs / Express处理丢失的静态文件

时间:2016-08-02 00:07:26

标签: node.js express middleware static-files

我有一个节点App。配置为通过以下方式提供静态文件: app.use(express.static(path.join(__dirname, '../public'))); 我在其他路线上使用了一些auth中间件。当我点击服务器上不存在的图像时出现问题。在这种情况下,快递似乎试图通过我对非静态内容的所有中间件发送该请求。 有没有办法只发送404丢失的静态资产,而不是重新触发每个丢失文件的所有中间件?

1 个答案:

答案 0 :(得分:6)

express.static()中间件默认工作的方式是它在目标目录中查找文件,如果找不到,则将其传递给下一个中间件。

但是,它有fallthrough选项,如果你将它设置为false,那么它将立即404任何应该在静态目录中的丢失文件。

来自the express.static() doc

  

下通

     

当此选项为true时,客户端错误,例如错误的请求或   对不存在的文件的请求将导致此中间件简单   调用next()来调用堆栈中的下一个中间件。当假,   这些错误(甚至是404s)将调用next(错误)。

     

将此选项设置为true,以便映射多个物理目录   到相同的网址或路由以填写不存在的文件。

     

如果已将此中间件安装在设计为的路径上,请使用false   严格的单个文件系统目录,允许   短路404s以减少开销。这个中间件也会   回复所有方法。

示例:

app.use("/public", express.static("/static", {fallthrough: false}));