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

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

приложение.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());

маршрут1.js:

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

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

module.exports = router.routes();

маршрут2.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

person thedarklord47    schedule 26.01.2016    source источник


Ответы (1)


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

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

//either this

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

//or regular koa redirect

router.all('/route1', function *() {
    this.redirect('/route2');
});
person thedarklord47    schedule 26.01.2016