express app中的中间件,执行两次

express app中的中间件,执行两次,express,router,middleware,Express,Router,Middleware,出于某种原因,我的中间件执行了两次。路由器只执行一次,但中间件执行两次。 我试着去掉一些,看看是否有用,但我不能把范围缩小到任何东西。我不知道是什么引起的 //路线 从“express”导入{Router} 导出默认路由器({mergeParams:true})( “/v1/tickets/createTicket”, 异步(请求、恢复、下一步)=>{ res.send({message:success}) } ) //路由器-动态创建 export default () => sy

出于某种原因,我的中间件执行了两次。路由器只执行一次,但中间件执行两次。 我试着去掉一些,看看是否有用,但我不能把范围缩小到任何东西。我不知道是什么引起的

//路线

从“express”导入{Router}
导出默认路由器({mergeParams:true})(
“/v1/tickets/createTicket”,
异步(请求、恢复、下一步)=>{
res.send({message:success})
}
)
//路由器-动态创建

export default () =>
  sync('**/*.js', { cwd: `${__dirname}/` })
    .map((filename) => require(`./${filename}`).default)
    .filter((router) => Object.getPrototypeOf(router) === Router)
    .reduce(
      (rootRouter, router) =>
        rootRouter
          .post('/v1/tickets/createTicket', isAuthenticated)
          .use(router),
      Router({ mergeParams: true })
    )
//中间件

export default async function(req, res, next) {
  console.log(req.path)
  return next()
}
//快速应用

export default ({ logger }) =>
  express()
    .use(
      expressWinston.logger({
        winstonInstance: logger,
        msg:
          '{{res.statusCode}} {{req.method}} {{req.url}} {{res.responseTime}}ms',
        meta: false
      })
    )
    .use(urlencoded({ extended: true }))
    .use(json())
    .use(cors())
    .use('/api', router)
    .use((err, req, res, next) => {
      if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
        logger.error('Incorrect body structure')
        return res.sendStatus(400) // Bad request
      }
      let errorMessage = { error: err.error || err }
      logger.error(errorMessage.error)
      res.status(err.code || 500).json(errorMessage)
      res.end()
    })
控制台中的输出为:

/v1/tickets/createTicket
/v1/tickets/createTicket

欢迎来到堆栈溢出。您正在发送
.post('/v1/tickets/createTicket',
在您的
路由中,然后再次在
路由器中发送
-
rootRouter.post('/v1/tickets/createTicket',已验证)
。这可能是原因吗?可能是这样,但是,我应该如何在该路径之前钩住中间件,我在单独的文件中有路由。我认为它应该执行中间件,然后转到我的路径的下一个(),在那里我为该路径执行实际操作。