koa-router use 多个中间件 next is undefined
var router = new require('koa-router');
router.use(function *(next) {
// first middleware, do somethins
yield next;
});
router.use('/test', function *(next) {
// second middleware, do somethins
yield next;
});
router.use(function *(next) {
// thrid middleware, do somethins
yield next;
});
router.all('/', function () {
this.body = "hello world";
});
当我请求 /
的时候,在第三个中间件抛出异常,next is undefined
,这该怎么处理
2 回复
路由使用的函数应该都为generator的 你第三个使用的是普通函数 但是koa内部会对他yield 我估计错误是这里 自豪地采用 CNodeJS ionic
我看到你在 koa-router 里发的 issue 了 你在issue里的代码是没问题的. 而你在这里发的代码是由问题的.
// 这里应该是一个generator而不是普通的function
// 这个 generator运行的结果会作为 next 参数传给上面的middleware,也就是你说的第三个, 所以上面的代码在那里报错
router.all('/', function *() {
this.body = "hello world";
});