2016-09-13 1 views
1

Я начинаю разработку на очень маленьком приложении и решил использовать koa Framework с 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 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 в основной маршрутизатор. Я тестирую добавление некоторых фиктивных маршрутов на главный маршрутизатор до этого, и маршрут Phantom не отображается – mtsdev

ответ

0

OK. Не совсем подходит, но, по крайней мере, это не Phantom больше После рыть с помощью отладчика, кажется, что маршрут aperas когда аа промежуточного добавляется «глобально» к маршрутизатору, то есть, когда ваш «использовать» это

router.use(anotherRouter.routes() 

, который имеет смысл, как если бы вы добавляли промежуточное ПО «глобально» таким образом, вы ожидаете, что каждый запрос прошел через него.

Я открыл вопрос, потому что я получал 404 не найден Для ВСЕХ моих маршрутов и подозреваемых этот был нарушителем, но, в конце концов, это было для нескольких разных вопросов (недопустимые пути, несуществующие файлы, неправильная конфигурация и т. д.)

Смежные вопросы