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

JS/React调用Express接口时body含参但字段为undefined问题咨询

问题排查及解决方案

核心问题原因

JavaScript 对象属性名大小写敏感,你前后端传递的参数属性名大小写不匹配:

  • 前端 diary.js 中构造的请求 payload 是 { Description: diaryText },属性名首字母为大写 D
  • 后端 api.js 中解构取值用的是 const {description} = req.body,属性名首字母为小写 d
    因此后端解构拿到的 description 必然是 undefined,调用 split 方法时就抛出了类型错误。

修复方案(二选一即可)

  • 方案1:修改后端取值代码,和前端传参的属性名对齐
    把 api.js 里的解构代码改为:
    const { Description: description } = req.body;
    
    或者直接取值:
    const description = req.body.Description;
    
  • 方案2:修改前端传参代码,和后端取值的属性名对齐
    把 diary.js 里的 payload 构造代码改为:
    let payload = { description: diaryText };
    

其他附带问题修复

还有两处代码缺陷可以同步修正,避免后续出现其他异常:

  1. 后端响应格式错误
    res.json() 方法会自动将传入的对象序列化为JSON字符串,不需要额外嵌套 JSON.stringify,否则会返回双重序列化的字符串,前端需要二次解析才能拿到数据。把 api.js 中的响应代码改为:
res.json({sentiment})
  1. 前端错误捕获逻辑错误
    当前请求错误的捕获写法是错误的,.then 无法捕获前序链抛出的异常,需要把最后一个 .then 改为 .catch,同时做兼容判断避免空值报错:
makePostRequest("testText").then(response => {
  console.log("Data returned from the function call:", response);
}).catch(error => {
  console.error(error?.response?.data || error.message);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:00:00