SvelteKit+MongoDB开发注册页 接口接收输入为null问题求助
问题根因
你的排查方向错了,问题不在register.svelte文件,而在register.js的请求体解析逻辑。
你在后端代码中写的const body = await request.body;是错误写法:新版本SvelteKit中request.body是原始可读流(ReadableStream)对象,并非解析完成的请求参数对象,直接从这个流对象上读取email、password属性,自然会得到null。
这也是为什么你把前端bind:value换成e.target.value取值,问题仍然存在——前端的取值、提交逻辑本身没有问题,错误出在后端接收参数的环节。你之前适配版本迭代的破坏性变更时,漏掉了请求体解析方式的更新:老版本SvelteKit会自动解析请求体挂载到request.body,新版本必须显式调用对应方法解析不同类型的请求载荷。
修复方案
打开register.js,将原来的请求体解析代码:
const body = await request.body;
替换为专门解析JSON格式请求体的方法:
const body = await request.json();
改完即可正常获取到前端提交的邮箱、密码字段。
可选验证步骤
如果需要确认前端逻辑是否正常,可以在register.svelte的fetch请求发起前加一行日志:
console.log('前端提交参数:', email, password);
输入内容点击注册后,只要浏览器控制台能正常打印你输入的邮箱和密码,就说明前端绑定、传参逻辑完全正常,无需再修改前端代码。
内容的提问来源于stack exchange,提问作者Cornelius
相关产品推荐
相关产品推荐

