今天遇到的一个奇怪的坑 koa2+bodyParser+router
var Koa = require('koa');
var router = require('koa-router')();
const bodyParser = require('koa-bodyparser');
var app = new Koa();
// app.use((ctx,next)=>{
// ctx.set('Access-Control-Allow-Origin','*');
// next();
// });
router.get('/', (ctx, next) => {
console.log('Get get');
ctx.body="end";
});
router.post('/test', (ctx, next) => {
console.log('Get post');
ctx.body="end";
});
app.use(bodyParser());
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(4000);
使用curl测试,get和post都能正常工作,但只要设置了Access-Control-Allow-Origin(注释掉的部分),get还能正常工作,post就fail了
6 回复
另外如果改一下顺序,就可以正常工作了
app.use(bodyParser());
app
.use(router.routes())
.use(router.allowedMethods());
app.use((ctx,next)=>{
ctx.set('Access-Control-Allow-Origin','*');
next();
});
koa的中间件单个还好,组合起来用真的各种心累
@zuohuadong 跑题了大胸弟
你这应该是koa2中间件的写法不对吧,加个return或者await next()应该就可以了 https://cnodejs.org/topic/5792c2222d740f7c26637e08
@gzf1234 说的对,没有 await next()
@gzf1234 @liangtongzhuo 谢谢两位的回答,我也发现了这个问题,之前用router和views的时候也遇到过return next()的问题 koa中间件组合到一块的时候很容易遇到这种坑 心累