如何向Firebase OnRequest函数发送payload及解决req.body为空问题
问题排查与解决方案
1. 修复日志打印语法错误
你当前的日志写法本身存在问题,会直接导致无法打印req.body内容,极易误导你判断问题:
// 错误写法:JSON.stringify第一个参数为固定字符串,第二个参数作为replacer不会生效,只会输出"FELOOOOOO" console.log(JSON.stringify("FELOOOOOO", req.body));
修改为正确写法后再验证:
// 写法1:分开打印标识和请求体 console.log("FELOOOOOO", JSON.stringify(req.body)); // 写法2:序列化完整对象 console.log(JSON.stringify({ msg: "FELOOOOOO", body: req.body }));
2. 校验Postman请求配置
参考你提供的请求截图:
需确认两项配置:
- 请求头必须携带
Content-Type: application/json,否则express.json()不会触发解析 - Body选项卡必须选择
raw格式,且右侧下拉选择JSON,如果使用form-data/x-www-form-urlencoded格式,需要额外新增解析中间件:
app.use(express.urlencoded({ extended: true, limit: "10kb" }));
3. 排查自定义中间件异常
你路由中引入的_accessToken自定义中间件大概率是问题根源:
- 检查中间件内部是否调用了
next(),未调用会导致请求无法传递到后续路由处理逻辑 - 检查中间件是否提前消费了请求体流(比如自行监听
data/end事件),会导致express.json()无法读取到请求体内容 - 临时移除
_accessToken中间件直接测试路由,验证是否能正常拿到req.body,排除中间件影响
4. 兼容低版本Express
如果你使用的Express版本低于4.16.0,内置的express.json()解析器不存在,需要放开你注释的body-parser依赖:
const bodyParser = require("body-parser"); // 替换原有express.json()配置 app.use(bodyParser.json({limit: "10kb"})); app.use(bodyParser.urlencoded({ extended: true, limit: "10kb" }));
内容的提问来源于stack exchange,提问作者Dijiflex
相关产品推荐
相关产品推荐

