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

Express修改res.send为res.status写法后仍报废弃错误如何解决

问题根因

你收到的废弃警告并非来自你修改的then分支响应代码,而是来自catch异常分支的代码:

res.send("ERROR AT FACE ID : ", error);

Express 4.x 版本中,res.send()如果传入2个及以上参数,会被识别为已经废弃的旧用法res.send(状态码, 响应体),因此触发警告。你之前仅修改了正常请求的返回逻辑,没有处理异常分支的代码,所以警告会一直出现。

解决步骤
  1. 修正catch分支的响应写法,不要给res.send()/res.json()/res.jsonp()这类方法直接传入多个参数,要先调用res.status()设置状态码,再调用返回方法传入响应内容:
.catch(function (error) {
  // 字符串拼接后返回
  res.status(500).send(`ERROR AT FACE ID : ${error.message || JSON.stringify(error)}`);
  // 也可以用JSON格式返回错误,更规范:
  // res.status(500).json({
  //   msg: "ERROR AT FACE ID",
  //   error: error
  // })
});
  1. 修正完成后必须重启Express服务,修改的代码才会生效。
通用定位方法

如果修改后仍然出现警告,可以按以下方法精准定位问题代码:

  • 全局搜索项目中所有res.send(、res.json(、res.jsonp(调用,检查是否存在传入2个及以上参数的写法,覆盖所有路由、中间件文件
  • 在项目入口文件最顶部添加警告栈打印逻辑,触发请求后可以直接看到警告对应的具体文件和行号:
process.on('warning', (warning) => {
  console.warn('警告名称:', warning.name);
  console.warn('警告内容:', warning.message);
  console.warn('触发位置栈:', warning.stack);
});

另外注意你之前尝试的res.jsonp(200, response_data)写法也不符合规范,正确写法是res.status(200).jsonp(response_data)。

内容的提问来源于stack exchange,提问作者Sergio Lara Vásquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:05