1

私は非常に小さなアプリの開発を開始しており、koa-router で koa フレームワークを使用することにしました (将来的には他のミドルウェアの中でも)

質問は、ルートを指定した後、奇妙なキャッチオール、メソッドなし、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

わかった。正確な解決策ではありませんが、少なくともファントムではありませんデバッガで掘り下げた後、ミドルウェアがルーターに「グローバルに」追加されたとき、つまり、それを「使用」したときにaperasをルーティングするようです

router.use(anotherRouter.routes()

ミドルウェアをそのように「グローバルに」追加しているかのように、これは完全に理にかなっています。すべてのリクエストが通過することを期待します

すべてのルートで 404 not found を取得していたため、質問を開きましたが、これが違反者であると疑われましたが、最終的にはいくつかの異なる質問 (到達できないパス、存在しないファイル、設定ミスなど) に対するものでした。

于 2016-09-18T01:08:26.693 に答える