使用'koa-router',app.use(路由器(app))抛出“需要生成器函数”错误信息

时间:2015-07-10 05:54:07

标签: javascript koa

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

app.use(router(app));

引发此错误:

  

AssertionError:app.use()需要生成器函数

很多示例代码都说这样设置koa-router。据推测它可以为koa app添加方法。

3 个答案:

答案 0 :(得分:7)

koa-router软件包改变了几个月后删除了扩展应用程序对象的功能,正如你在上面所编写的那样...它曾经以这种方式工作,但这是一个重大改变:

http://github.com/alexmingoia/koa-router/issues/120

以下是您现在如何设置路线的示例:

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

// below line doesn't work anymore because of a breaking change
// app.use(router(app));

var api = router();

api.get('/', function *(){
    this.body = 'response here';
});

app
  .use(api.routes())
  .use(api.allowedMethods());

app.listen(3000);

答案 1 :(得分:1)

首先,改变你的:

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

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

之后,插入一些路由器规则,例如:

router.get('/', function *(next) {
  this.status = 200;
  this.body = {"Welcome":"Hello"};
});

在所有这些写法结束时:app.use(router.routes()); - 此行是此处的一个关键因素......而且您已全部设定。

答案 2 :(得分:0)

它不起作用,因为app是一个对象。尝试设置路由器,如:

var app = require('koa')();
var Router = require('koa-router');
var pub = new Router();
app.use(pub.routes());

希望这能让你感到振奋:)