【问题标题】:express static routes are not working when adding a validation middleware添加验证中间件时,表达静态路由不起作用
【发布时间】:2021-12-13 22:01:30
【问题描述】:

我正在尝试添加验证中间件以保护我的服务器数据。当我收到请求(http://localhost:3000/filepath)时,没有中间件的静态路由:

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

我得到一个状态 200 OK。但是当我尝试请求相同的路由时,但这次使用了另一个问题中推荐的简单中间件(Is it possible to use validation with express static routes?

var staticMiddleware = function(req, res, next){
    console.log("middleware")
    next();
}

app.use(staticMiddleware, express.static('data'));

我找不到状态 404。

如何在 express.static 中间件之前向 app.use 添加另一个中间件?

【问题讨论】:

  • 你的代码是正确的,你可以在app.use中使用任意数量的中间件。如果您在同一个文件中的相同位置使用相同的代码,那么这很奇怪,您可能希望将path.join() 用于静态文件夹(在您的情况下为data)并使文件夹路径正确
  • Lucas 看来我的回答有点误导,可能是中间件的顺序,如果app.use(express.static('data'), staticMiddleware); 有效,你可以试试吗?

标签: javascript express validation middleware static-files


【解决方案1】:

您需要单独添加它们。

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

var staticMiddleware = function(req, res, next){
    console.log("middleware")
    next();
}

app.use(staticMiddleware );

【讨论】:

  • 为什么你认为这比app.use(staticMiddleware, express.static('data'));好? app.use() 接受一个或多个中间件回调函数就好了。这是来自docapp.use([path,] callback [, callback...])。它们不必单独添加。
  • @jfriend00 我不知道,谢谢指点。所以你说这里的顺序很重要,对吧? app.use(express.static('data'), staticMiddleware); 也应该工作了吧?
  • 只有当其中一个不调用 next() 或者一个依赖于另一个的结果并因此必须首先调用时,顺序才重要。
猜你喜欢
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2019-01-05
相关资源
最近更新 更多