Ela*_*itz 1 javascript generator koa koa-router
当我使用生成器时,我一直在努力让 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");
Run Code Online (Sandbox Code Playgroud)
我用 node 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");
Run Code Online (Sandbox Code Playgroud)
知道为什么发电机不运行吗?
如果您使用的@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");
Run Code Online (Sandbox Code Playgroud)
当然,async/await目前不支持,除非您使用 Node v7 并使用该--harmony-async-await标志。如果你想在 Node v4 中使用它,你将不得不使用类似的东西babel来转换你的代码。如果您不想为服务器端代码构建步骤,我建议您只使用 Koa v1 并坚持使用生成器函数。
| 归档时间: |
|
| 查看次数: |
1946 次 |
| 最近记录: |