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

Express POST接口取消注释校验代码报UnhandledPromiseRejectionWarning问题咨询

问题原因
  • 校验代码存在未定义变量引用错误:你在校验分支中返回的是result.error,但你整个路由逻辑里从来没有定义过result变量,取消注释后执行到这个分支时会抛出引用错误。这段校验逻辑写在try...catch块之外,async函数中未被捕获的错误会自动转换为未处理的Promise拒绝,直接触发你遇到的报错。
  • 现有代码还存在隐藏问题:catch块中使用的savedClient是try块内部定义的变量,只有client.save()执行成功时才会初始化,一旦触发catch逻辑,savedClient属于未定义状态,访问savedClient.error也会抛出额外的未捕获错误。
修复方案

先修正两个变量引用错误即可:

  1. 校验分支的result.error改成client.error
  2. catch块的savedClient.error改成捕获到的error对象

修复后代码示例:

router.post("/", async (req, res) => {
  let client = validate(req.body);

  if (client.error) {
    res.status(400).json(client.error);
    return;
  }

  client = new Client(req.body);

  try {
    let savedClient = await client.save();
    res.location(`/${savedClient._id}`).status(201).json(savedClient);
  } catch (error) {
    res.status(500).json(error);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:05