2016-09-13 5 views
1

非常に小さなアプリケーションでdevelを開始し、koa-frameworkをkoa-routerと使用することを決めました(将来は他のミドルウェアの中で)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-ルータのデバッグを有効にした場合

また、私は物事をしても他人にするために、このルートはどのような種類

任意のアイデアのない関連する方法を持っていないことを示し、

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

私はあなたのコードを[最小限の例](https://gist.github.com/anonymous/26766ac4f6ba4125a5689e8e475f262d)で試してみましたが、コード内にない別の場所から来ているはずです含まれています。残りのコードを共有できますか? – saadq

+0

私はあなたにミニセットアップを試してみました。残りのコードは17個のソースファイルと似ていますが、それらのほとんどはhttpサーバとは関係がありません。残りのmmiddlewareではかなり基本的です。テストしたとコメントしたので、基本的には何があるか。 – mtsdev

+0

問題が深刻になってきているように、ファントムルートはadminRouterルートをメインルータにインポートするのとまったく同じように見えます。私はそれがファントムルートが表示されません前にメインルータ上のいくつかのダミールートを追加してテストした – mtsdev

答えて

0

OK。あなたの

router.use(anotherRouter.routes() 

それを「使用」しないときに、正確に解決策が、少なくともそれはもはや デバッガで掘った後にPHANTOMされていない、すなわち、AAミドルウェアがルータに「グローバル」が追加されたときに、そのルートaperasようです

これは完璧な意味合いを持ち、あたかもそのようなミドルウェアを追加しているかのように、それまでのすべてのリクエストがこれを通過すると期待しています

私は404が見つかりませんでしたこれは犯罪者でしたが、最終的には2つの異なる質問(到達不能なパス、存在しないファイル、誤った設定など)のためでした

関連する問題