【问题标题】:Express JS: how to know if request is for static asset?Express JS:如何知道请求是否针对静态资产?
【发布时间】:2015-09-16 00:15:21
【问题描述】:

我正在为某些特定任务编写中间件,当请求针对静态资产(来自客户端文件夹:app.use(express.static(path.join(__dirname, " ../client")));)

那么我如何知道特定请求是针对静态资产还是从“客户端”文件夹提供服务?

我有以下代码

app.use(express.static(path.join(__dirname, "../client")));   
app.use(someCustomMiddleware()); 

我看到对 css/js 文件等静态资产的请求仍在通过 someCustomMiddleware()。我的要求是 someCustomMiddleware() 不应该处理对静态资产的请求。

【问题讨论】:

    标签: node.js express middleware


    【解决方案1】:

    只需在您的其他路线之前添加它。如果对静态项目发出请求,那么它将首先转到 app.use(express.static(path.join(__dirname, "../client")));,然后是您的路线。

    例如。假设您的公用文件夹有一些 css 文件夹,其中有一个文件 style.css。假设您的路线如下所示。

    app.use(express.static(path.join(__dirname, "../public")));
    app.use(someMiddleware);
    

    如果您访问/css/style.css,它将点击express.static 并提供文件,并且不会转到'/' 路由。

    【讨论】:

    • 我有下面的代码 app.use(express.static(path.join(__dirname, "../client"))); app.use(someCustomMiddleware());我看到对 css/js 文件等静态资产的请求仍在通过 someCustomMiddleware()
    • 谢谢@patosai,但这似乎对我不起作用。如果您能提供帮助,我已经用更多代码编辑了票证。
    • 我刚试过这个,它对我有用。你确定你的静态目录是正确的吗?
    • @Patosai +1 我建议您详细说明您的答案并提供更多代码 - 您已经展示了一个否定案例。显示positive case
    猜你喜欢
    • 2017-06-16
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多