使用Next.js API与next-connect向Sanity CMS发送POST请求时出现500错误
Next.js + next-connect 向Sanity提交用户信息时POST请求500错误求助
开发注册表单过程中,尝试通过Next.js结合next-connect向Sanity CMS提交用户信息,但发送POST请求时触发了500错误。
前端register.js页面代码片段
const submitHandler = async ({ firstName, lastName, email, password, confirmPassword, }) => { if (password !== confirmPassword) { enqueueSnackbar("Passwords don't match", { variant: "error" }); return; } try { const { data } = await axios.post(`/api/users/register`, { firstName, lastName, email, password, }); console.log("hit success") dispatch({ type: "USER_LOGIN", payload: data }); jsCookie.set("userInfo", JSON.stringify(data)); router.push("/"); } catch (err) { console.log(err.message) enqueueSnackbar("Something went wrong, please try again.", { variant: "error" }); } };
API路由api/users/router.js代码片段
handler.post(async (req, res) => { console.log("hit handler") const projectId = client.projectId; const dataset = client.dataset; const apiVersion = client.apiVersion; const tokenWithWriteAccess = process.env.SANITY_AUTH_TOKEN; const createMutations = [ { create: { _type: "user", firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, password: bcrypt.hashSync(req.body.password), isAdmin: false, isWholesale: false, }, }, ]; const { data } = await axios.post( `https://${projectId}.api.sanity.io/v${apiVersion}/data/mutate/${dataset}`, { mutations: createMutations, }, { headers: { "Content-type": "application/json", Authorization: `Bearer ${tokenWithWriteAccess}`, }, } ); const userId = data.results[0].id; const user = { _id: userId, firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, isWholesale: false, isAdmin: false, }; const token = signToken(user); res.send({ ...user, token }); });
已完成的排查动作
- 仔细检查了GROQ请求格式
- 已配置CORS允许localhost访问
- 确认使用的访问令牌有效,projectID等变量均正确
- 验证表单处理器工作正常,发送的字段与Sanity中的user schema匹配
- 通过Postman成功向
/api/users/register端点发送GET请求
恳请各位帮忙分析问题并提供解决方案,谢谢!
内容的提问来源于stack exchange,提问作者Calathea
相关产品推荐
相关产品推荐

