Javascript 如果请求已被处理,则阻止执行下一个路由器

Javascript 如果请求已被处理,则阻止执行下一个路由器,javascript,node.js,connect,Javascript,Node.js,Connect,我使用的是connect中间件,有多个路由器功能,如下所示 var server = connect() .use(connect.cookieParser("secret")) .use(connect.session({secret: 'keyboard cat',cookie: { maxAge: 60000 }})) .use('/somepath', connect.static(__dirname + '/somepath')) .use('/_someapi', f

我使用的是connect中间件,有多个
路由器
功能,如下所示

var server = connect()
  .use(connect.cookieParser("secret"))
  .use(connect.session({secret: 'keyboard cat',cookie: { maxAge: 60000 }}))
  .use('/somepath', connect.static(__dirname + '/somepath'))
  .use('/_someapi', function (req, res) {
      // do something
  })
  .use(function (req, res) { // default case router
      // do something
  })
  .listen(8080)
我的问题是,即使我请求
/\u someapi
,在执行其功能后,下一个
路由器
也会被调用。我想知道我怎样才能预防它?我的意思是,如果请求已经被处理,那么下一个路由器就不应该尝试为它提供服务


从函数返回
false
,并返回
res.end(“”)没有帮助。

这里的问题是,这些请求可能实际上是触发中间件的不同请求

要检查此项:
console.log(req.url)
。 最烦人的问题是favicon.ico,当你不知道浏览器一直在请求它时,它会让你头疼不已

如果您正在开发RESTful API或任何其他不需要favicon.ico的类似应用程序,那么使用此中间件作为第一个中间件之一

app.use(function(req, res, next) {
  if (req.url != '/favicon.ico') {
    return next();
  } else {
    res.status(200);
    res.header('Content-Type', 'image/x-icon');
    res.header('Cache-Control', 'max-age=4294880896');
    res.end();
  }
});
这将以200和很长的缓存寿命响应,这样浏览器就不会再调用它了


同样,为了澄清-您确定需要使用
。使用
而不是
。获取
或任何其他路由解决方案吗?

肯定还有其他问题。如果您不调用res.next(),后续的中间件将不会被调用。我没有调用
next()
,但它仍在继续。你能告诉我可能有什么问题吗?我有一个非常简单的代码,我已经发布了,所以不能找出哪里和什么是错误的,我看不出你的代码有任何错误。您如何知道调用了下一个中间件?我尝试添加了
console.log()
,它显示了。console.log显示在/someapi-middleware和最后一个中间件中?您完全确定在/u someapi-middleware中没有调用next()?