1

我开始开发非常小的应用程序,并决定将 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

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

对那个“幻影”条目有任何想法吗?

4

1 回答 1

0

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

router.use(anotherRouter.routes()

这很有意义,就好像您以这种方式“全局”添加中间件一样,您希望每个请求都通过它

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

于 2016-09-18T01:08:26.693 回答