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

Express新手求助:PUT接口调用时遇res.send(status,body)弃用报错

Express PUT请求中res.send弃用错误排查

在使用Postman执行PUT更新操作时,出现了弃用警告:express deprecated res.send(status, body): Use res.status(status).send(body) instead,你的路由代码如下:

router.put("/admin/update_profile/:id", async (req, res) => {
  try {
    const id = req.params.id;
    const updatedData = req.body;
    const options = { new: true };

    const result = await SomeModel.findByIdAndUpdate(id, updatedData, options);

    res.send(result);
    // res.status(200).send(result)
  } catch (err) {
    res.send("Error ", err);
    // res.status(404).send("Error ", err)
  }
});

错误原因

问题出在catch块里的res.send("Error ", err)这行代码:
Express新版本已弃用res.send(status, body)这种同时传递状态码和内容的调用方式,你这里传入两个参数时,Express会尝试将第一个参数"Error "解析为状态码,这直接触发了弃用警告。

而try块里的res.send(result)是正常的——仅传递一个内容参数时,Express默认使用200状态码,也可以显式写成res.status(200).send(result),效果完全一致。

修正方案

修改catch块的错误响应写法,先通过res.status()设置合适的HTTP状态码(比如资源未找到用404、服务器内部错误用500,根据实际场景选择),再用send()返回错误内容:

修正后的完整代码:

router.put("/admin/update_profile/:id", async (req, res) => {
  try {
    const id = req.params.id;
    const updatedData = req.body;
    const options = { new: true };

    const result = await SomeModel.findByIdAndUpdate(id, updatedData, options);

    res.send(result); // 或显式写 res.status(200).send(result)
  } catch (err) {
    res.status(500).send(`Error: ${err.message}`);
  }
});

内容的提问来源于stack exchange,提问作者sumanth.js

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:25:17