2016-01-26 3 views
1

Как сделать перенаправления с вложенными маршрутами с помощью koa-router?Перенаправление с вложенными маршрутами в koa с помощью koa-router

app.js:

var router = require('koa-router')(); 
var route1 = require('./routes/route1'); 
var route2 = require('./routes/route2'); 

router.use('/route1', route1); 
router.use('/route2', route2); 

app.use(router.routes()); 

route1.js:

var router = require('koa-router')(); 

router.all('/', function *() { 
    router.redirect('/route2'); 
}); 

module.exports = router.routes(); 

route2.js:

var router = require('koa-router')(); 

router.all('/', function *() { 
    this.body = "route2"; 
}); 

Приведенные выше результаты кода в следующей ошибки во время выполнения при переходе на /route1:

TypeError: Cannot read property '0' of undefined 
    at Router.redirect (/Users/colevarner/fullpower/node/motionxlive-koa/node_modules/koa-router/lib/router.js:477:18) 
    at Object.<anonymous> (/Users/colevarner/fullpower/node/motionxlive-koa/routes/support.js:54:12) 
    at next (native) 
    at onFulfilled (/Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:65:19) 
    at /Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:54:5 
    at Object.co (/Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:50:10) 
    at Object.toPromise (/Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:118:63) 
    at next (/Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:99:29) 
    at onFulfilled (/Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:69:7) 
    at /Users/colevarner/fullpower/node/motionxlive-koa/node_modules/co/index.js:54:5 

ответ

1

А, мне нужно научиться читать. Я интерпретировал документы koa-router, чтобы сказать, что router.redirect() предназначался для использования в функции HTTP-глагола.

Правильное использование ниже:

//either this 

router.redirect('/route1', '/route2'); 

//or regular koa redirect 

router.all('/route1', function *() { 
    this.redirect('/route2'); 
}); 
Смежные вопросы