如何摆脱“幽灵”?koa-router添加而未定义的路由

How to get rid of a "phantom" route that koa-router adds without being defined

本文关键字:添加 未定义 路由 koa-router 何摆脱 幽灵      更新时间:2023-09-26

我开始开发一个非常小的应用程序,并决定使用koa框架与koa-router(在一些其他中间件在未来)

问题是,在指定了我的路由之后,出现了一个奇怪的全集,没有方法,没有url路由

// excerpt of /app/routes/admin
var router = require('koa-router')().prefix('/admin');
router.get('/a.html', function *(next){
  return this.render('a', {some: 'data'})
})
router.get('/index.html', function *(next){
  return this.render('index', {})
})
router.get('/b.html', function *(next){
  return this.render('b', {})
})
module.exports = router

// excerpt of Main App
    
    // routes
    var adminRouter =  require('/app/routes/admin')
    this.app.use( adminRouter.routes())
    this.app.use( adminRouter.allowedMethods())
    
    // Checking Routes
    console.log(adminRouter.stack.map(i => i.path));

…当运行时,它给出以下结果:

    [ '(.*)',
  '/admin/a.html',
  '/admin/index.html',
  '/admin/b.html' ]

(.*)到底是从哪里来的?

同样,如果我打开koa-router的调试,我得到

  koa-router defined route HEAD,GET /admin/list.html +46ms
  koa-router defined route HEAD,GET /admin/index.html +1ms
  koa-router defined route HEAD,GET /admin/queries.html +0ms
  koa-router defined route  (.*) +1ms

,更奇怪的是,这表明该路由没有任何类型的相关方法

你知道那个"幻影"条目吗?

OK。不完全是解决方案,但至少它不再是幻影了经过调试器的挖掘,似乎路由失效时,一个中间件被"全局"添加到路由器,即当你"使用"它

router.use(anotherRouter.routes()

这非常有意义,就好像您以这种方式"全局"添加中间件一样,您期望每个请求都经过它

我打开了这个问题,因为我得到404没有找到我所有的路由,并怀疑这是罪犯,但最终它是为几个不同的问题(不可达的路径,不存在的文件,错误配置等)