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

测试Node.js+MySQL登录系统查全用户接口时报TypeError错误

报错原因
  • 核心触发原因:测试GET查询所有用户的接口时,请求头携带了Content-Type: application/json,但GET请求本身未传递任何请求体(body为空)。body-parser的JSON解析中间件默认开启严格模式,仅支持解析对象/数组类型的JSON内容,尝试解析空内容时拿到null值,读取属性时触发类型错误。
  • 配置层面原因:全局挂载了body-parser的JSON解析中间件,不需要传递请求体的GET请求也会经过解析逻辑,提升了该问题的触发概率。
修复方案
  • 测试侧快速修复:调用GET接口时直接移除Content-Type: application/json请求头即可。GET请求本身不需要通过请求体传递参数,无需声明JSON格式的请求体类型。
  • 代码侧永久修复:调整body-parser JSON解析的配置,关闭严格模式,允许解析空请求体,配置示例如下:
const bodyParser = require('body-parser');
// 原有全局挂载配置添加 strict: false 参数
app.use(bodyParser.json({
  strict: false
}));
  • 优化方案:可以调整中间件挂载范围,仅给需要接收JSON请求体的POST/PUT等路由挂载JSON解析中间件,不需要解析请求体的GET路由不挂载,避免不必要的解析逻辑。
额外代码风险提示

你现有代码中还存在两个可优化的问题:

  • 注册接口的INSERT SQL语句中,email参数直接拼接变量未用db.escape()处理,存在SQL注入风险,建议修改为${db.escape(email)}
  • 注册接口的数据库查询错误处理逻辑中,throw err写在return语句之前,抛出错误后return响应不会执行,建议去掉throw err,优先返回错误响应给前端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:45:00