koa-router 不与发电机一起工作
koa-router not working with generator
当我使用生成器时,我一直在努力让 koa 响应请求。
我写了一个 test.js 应用程序来演示这一点。
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', function *(next){
this.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
我运行节点为v4.6.1的服务器
没有发生错误,但是当我发送 get 请求时,我收到 Not Found
并且没有控制台日志。
这段代码虽然有效:
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', function (ctx){
ctx.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
知道为什么生成器不 运行 吗?
如果您使用的是 @next
版本的 koa 和 koa-router,您应该为中间件使用 async
函数,而不是用于 Koa v1 的生成器函数。
示例:
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', async function (ctx){
// You can use `await` in here
ctx.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
当然,目前不支持 async/await
,除非您使用 Node v7 并使用 --harmony-async-await
标志。如果你想将它与 Node v4 一起使用,你将不得不使用类似 babel
的东西来转换你的代码。如果您不想为您的服务器端代码构建步骤,我建议您只使用 Koa v1 并坚持使用生成器函数。
var koa = require('koa');
var app = new koa();
var router = require('koa-router');
var route = router(); // These three lines will help you
app.use(route.routes()); // to route to your given path and
route.get("/user/", functionname); // will call the generator function.
function *functionname(next){
console.log('in side the function');
this.body="hi this is my new page";
yield next;
};
当我使用生成器时,我一直在努力让 koa 响应请求。 我写了一个 test.js 应用程序来演示这一点。
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', function *(next){
this.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
我运行节点为v4.6.1的服务器
没有发生错误,但是当我发送 get 请求时,我收到 Not Found
并且没有控制台日志。
这段代码虽然有效:
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', function (ctx){
ctx.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
知道为什么生成器不 运行 吗?
如果您使用的是 @next
版本的 koa 和 koa-router,您应该为中间件使用 async
函数,而不是用于 Koa v1 的生成器函数。
示例:
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', async function (ctx){
// You can use `await` in here
ctx.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
当然,目前不支持 async/await
,除非您使用 Node v7 并使用 --harmony-async-await
标志。如果你想将它与 Node v4 一起使用,你将不得不使用类似 babel
的东西来转换你的代码。如果您不想为您的服务器端代码构建步骤,我建议您只使用 Koa v1 并坚持使用生成器函数。
var koa = require('koa');
var app = new koa();
var router = require('koa-router');
var route = router(); // These three lines will help you
app.use(route.routes()); // to route to your given path and
route.get("/user/", functionname); // will call the generator function.
function *functionname(next){
console.log('in side the function');
this.body="hi this is my new page";
yield next;
};