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

Node.js Express报错TypeError: res.statusCode is not a function

问题根因

报错TypeError: res.statusCode is not a function是API误用导致的,你混淆了Express响应对象的方法和原生HTTP响应的属性:

  • 正常运行的route1中使用的res.status(状态码)是Express封装的响应方法,调用后会返回响应对象本身,支持链式调用.end()、.send()、.json()等后续响应方法,写法符合Express规范。
  • 报错的route2中写的res.statusCode不是函数,它是Node.js原生HTTP模块响应对象上的可读写属性,直接赋值即可设置状态码,不能加括号传参调用,强行调用就会触发类型错误。
修复方法

任选一种符合规范的写法替换route2中的错误代码即可:

  • 写法1:和route1保持一致,使用Express标准链式方法,推荐用这种,保证项目内代码风格统一
router.get('/', (req, res) => {
    res.status(200).end()
})
  • 写法2:如果要使用statusCode,直接给属性赋值,不要加调用括号,之后手动结束响应
router.get('/', (req, res) => {
    res.statusCode = 200
    res.end()
})
同类问题排查方向

后续遇到类似“res对象某方法不存在”的报错,可以按以下优先级排查:

  • 先查拼写/API记忆错误:Express设置状态码的方法名是status不是statusCode,同类常见笔误还有把send()写成sent()、json()首字母大写写成JSON()等。
  • 检查路由回调参数顺序:如果把回调参数写成(res, req)把请求和响应对象写反,调用响应方法也会报不存在,当前你的代码参数顺序是正确的。
  • 检查自定义中间件逻辑:确认没有中间件错误覆盖res对象的原生方法,你当前场景不存在这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:48:20