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

Express注册路由req.body为空 无法获取JSON请求数据报错

问题根因

Express框架默认不会自动解析application/json格式的请求体,你没有在服务中配置对应的请求体解析中间件,导致路由处理函数中拿到的req.body是空对象{},解构得到的password值为undefined,传入bcrypt.hash方法时就会触发Illegal arguments: undefined, string错误。

修复步骤
  • 确认你的Express版本,4.16.0及以上版本可以直接使用内置的JSON解析中间件,在路由挂载之前添加如下配置(配置写在服务入口文件,通常是server.js/app.js):
const express = require('express')
const app = express()

// 解析JSON格式请求体,必须写在注册路由的代码之前
app.use(express.json())

// 之后再注册你的业务路由,示例:
// app.use('/api/register', require('./routes/register'))
  • 如果你的Express版本低于4.16.0,需要先安装body-parser依赖完成解析:
    1. 安装依赖:
    npm install body-parser
    
    1. 在入口文件路由挂载前添加配置:
    const bodyParser = require('body-parser')
    app.use(bodyParser.json())
    
  • 配置完成后重启Node服务,再次发送测试请求即可正常获取req.body中的JSON参数,加密逻辑也会正常执行。

注意:请求体解析中间件必须放在所有路由注册逻辑之前,否则配置不会对路由生效,依然会出现拿不到请求体的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.16 23:21:21