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



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

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

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

来自express.static()文档:

故障

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

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

如果您已将此中间件安装在设计为严格来说是一个单一的文件系统目录,它允许短路404s以减少开销。该中间件还将回复所有方法。

示例:

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

相关内容

  • 没有找到相关文章

最新更新