var app = require('koa')();
var router = require('koa-router');
app.use(router(app));
引发此错误:
AssertionError:app.use()需要生成器函数
很多示例代码都说这样设置koa-router。据推测它可以为koa app添加方法。
答案 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());
希望这能让你感到振奋:)