koa-router use 多个中间件 next is undefined
发布于 9 年前 作者 lext-7 8083 次浏览 最后一次编辑是 8 年前 来自 问答
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";
});
回到顶部