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

调用Express接口报ERR_HTTP_INVALID_STATUS_CODE无效状态码错误如何解决

错误原因定位

  • 核心错误来自你对res.send()方法的传参不符合Express API规范:Express的res.send()方法最多接受2个参数,第一个为响应体内容,第二个参数会被识别为HTTP响应状态码。你传入了两个独立的对象作为参数,第二个用户对象被当成了状态码传入,自然触发无效状态码的报错。
  • 次要问题:你把全局错误处理中间件定义在了业务路由的前面,按照Express中间件执行顺序,错误处理中间件必须放在所有路由、其他中间件的最后面才能正常捕获异常。

解决方案

第一步:修改接口返回逻辑

你需要把两个要返回的用户对象放到一个数组/外层对象中,作为单个参数传给res.json()(返回JSON数据更推荐用这个方法替代res.send()):

// create a GET route
app.get('/express_backend', (req, res) => { //Line 9
  res.json([ // 用数组包裹两个对象,也可以用外层对象格式比如 {list: [对象1, 对象2]}
    {
      name: "Tester one",
      techs: ["React & Redux", "Express", "MySQL"],
      description: "Lorem ipsum doabore et",
      checkin: "09:00",
      checkout:"18:30",
      type:"Known"
    },
    {
      name: "Tester two",
      techs: ["React & Redux", "Express", "MySQL"],
      description: "Lorem ipsum dolor sit amet, consectetet",
      checkin: "09:00",
      checkout:"18:30",
      type:"Blacklisted"
    }
  ]);
}); 

第二步:调整错误处理中间件位置

把错误处理中间件移到所有路由定义的后面,修改后完整可运行代码如下:

const express = require('express'); //Line 1
const app = express(); //Line 2
const port = process.env.PORT || 5000; //Line 3

app.listen(port, () => console.log(`Listening on port ${port}`)); 

// 先定义所有业务路由
app.get('/express_backend', (req, res) => { //Line 9
  res.json([
    {
      name: "Tester one",
      techs: ["React & Redux", "Express", "MySQL"],
      description: "Lorem ipsum doabore et",
      checkin: "09:00",
      checkout:"18:30",
      type:"Known"
  },
  {
      name: "Tester two",
      techs: ["React & Redux", "Express", "MySQL"],
      description: "Lorem ipsum dolor sit amet, consectetet",
      checkin: "09:00",
      checkout:"18:30",
      type:"Blacklisted"
  }
  ]);
}); 

// 错误处理中间件统一放在最后
app.use((err,req,res,next)=>{
   res.status(404).json({
       error : {
           message : err.message
      }
   });
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:36:03