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

Node.js Express PUT请求Postman一直发送无响应但数据库更新正常

Express PUT接口请求挂起问题记录

问题现象

  • 基于Node.js + Express开发RESTful API时,除用户信息更新PUT接口外,其余所有接口功能正常
  • 调用PUT接口时Postman一直卡在「sending request」状态,无响应返回,但数据库实际已经执行完成更新操作
  • 前期排查重点放在响应返回逻辑,尝试了所有已知的响应写法均未修复问题

相关代码

路由层

router.put('/:id', hlpJWT.authenticateToken,  ctrProfile.updateInfo);

控制器层

updateInfo = async function (req, res, next) {
  const input = {
     name: req.body.name,
     password: await srvAuth.cryptPass(req.body.password),
     ..., // 其余入参字段
  };
  let user = await srvProfile.updateProfile(input);
  if (user) res.json(user);
  else {
    res.status(404);
    res.json({ error: "user not found" });
  }
};

服务层

updateProfile = function (input) {
  return new Promise((resolve, reject) => {
    query(
      "UPDATE users SET ? WHERE ?",
      [
        {
          name: input.name,
          ... // 其余更新字段
        },
        { user_id: input.id },
      ],
      function (error, result) {
        if (error) {
          return reject(error);
        }
        return resolve(result);
      }
    );
  });
};

问题解决结论

最终将Express升级到v5版本后问题完全修复,确认根因和框架错误处理机制有关,但未定位到具体触发点。

补充说明:Express v4 原生不支持异步函数的错误自动捕获,只要async控制器/路由中出现未被try/catch显式捕获的异常,请求就会被挂起,不会返回任何响应,这也是这类「操作执行成功但请求卡住」问题的高频诱因。Express v5 原生支持异步错误捕获,会自动将异步逻辑抛出的异常传递给全局错误处理中间件,从根本上避免这类请求挂死的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:21:21