You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Deno Oak测试/api/register报reading 'name'未定义错误如何解决

报错原因

你在解析POST请求体的代码中多写了一层value属性的嵌套取值:
Oak框架中await ctx.request.body()返回的是请求体实例对象,该对象的value属性就是你提交的JSON参数对象。你现有代码写法为:

const { value: { name, email, password } } = await ctx.request.body().value;

这段代码相当于:先拿到了参数对象(await ctx.request.body().value的结果就是你的参数{ name: "first", email: "first@one.com", password: "123" }),又尝试从这个参数对象上解构value属性,但你的参数里没有value字段,所以得到的value是undefined,读取undefined的name属性就触发了这个TypeError。
你单独打印await ctx.request.body().value能拿到正确参数,也刚好验证了该逻辑。

解决方法

把register和login方法中解析请求体的代码修正,去掉多余的解构层级即可,推荐写法:

// 修正register方法的请求体解析
const { name, email, password } = await ctx.request.body().value;

// 同样修正login方法的请求体解析
const { email, password } = await ctx.request.body().value;

也可以拆分为更清晰的两行写法,避免后续取值出错:

const body = await ctx.request.body();
const { name, email, password } = body.value;

内容的提问来源于stack exchange,提问作者GoodMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:18:03