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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:07:41