Koa2 + koa-router 二次响应的问题。
发布于 7 年前 作者 995270418L 7025 次浏览 来自 问答

使用Koa2+koa-router, router.post(’/signin’,async(ctx,next) => { let body= ctx.request.body; let name = body.name,password = body.password; //使用mongolass验证密码操作 userModel.getUserByName(user).then({ //这里进行后续操作 if(!user){ //省略处理代码 return ctx.redirect(’/signin’); } //登录成功 //bala bala ctx.redirect(’/index’); }).catch(e => console.log(e.message)); }

gooooooole了好久,觉得是二次回调函数的问题,菜鸟,不知道怎么解决。

5 回复

router.post(’/signin’,async (ctx,next) => { let body= ctx.request.body; let name = body.name,password = body.password; //使用mongolass验证密码操作 let user = await userModel.getUserByName(name,password); //这里进行后续操作 if(!user){ //省略处理代码 return ctx.redirect(’/signin’); } //登录成功 //bala bala ctx.redirect(’/index’); } 你只贴了代码,不知道你想问什么

@zhhb 当登录成功(失败)后会报错(404 not found),Can’t set headers after they are sent.(二次响应)。请教一下怎么解决。

@995270418L 调用ctx.redirect(’/index’)请求的时候

@zhhb 已经解决了,使用async函数不能再使用 next,需要同步更换成await函数表达.

@995270418L next其实返回的是promise,所以可以await next()的,看你怎么样

回到顶部