如何摆脱幻象" koa-router添加的路由未定义

时间:2016-09-13 22:35:02

标签: javascript node.js koa koa-router

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

问题是,在指定我的路线后,会出现一个奇怪的全部,没有方法,没有网址路径



// 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

,所以为了让事情变得更奇怪,表明这条路线没有相关的任何方法

任何想法"幻影"条目?

1 个答案:

答案 0 :(得分:0)

行。不完全是一个解决方案,但至少它不再是Phantom 在使用调试器挖掘之后,似乎在添加中间件时路由aperas"全局"到路由器,即你的"使用"它

router.use(anotherRouter.routes()

这非常有意义,就好像您正在全球范围内添加中间件"那样,你期望通过它过去的每个请求

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