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

Node.js POST接口报错:Unexpected token u in JSON at position 0 求助

排查Node.js POST接口中"Unexpected token u in JSON at position 0"错误

这个错误我太熟了——它几乎百分百是因为你尝试JSON.parse()的内容是undefined,毕竟"u"正是undefined的首字符。咱们来一步步拆解你的代码问题,搞定这个bug:

1. 核心问题:错误的参数传递与请求体处理

你定义的callback函数看起来是为request这类HTTP客户端库设计的(需要error、response、body三个参数),但你直接把Express的req请求对象传进去了!这就导致callback里的body参数是undefined,自然JSON.parse(body)就会抛出那个"Unexpected token u"的错误。

而且在Express中处理POST JSON请求,必须先添加express.json()中间件,否则req.body会是undefined——这也是你出错的关键原因之一。

2. 额外的代码问题

  • 变量作用域错误:你在callback内部定义的objectItems,在外部的console.log根本访问不到,运行时会报objectItems is not defined的错误。
  • 语法错误:代码里的括号匹配混乱,比如callback定义后多了一个});,导致整个代码结构失效。

修正后的代码示例

首先,确保你的Express应用添加了JSON解析中间件(这一步绝对不能忘):

const express = require('express');
const app = express();

// 启用JSON请求体解析,没有这个,req.body就是undefined
app.use(express.json());

然后重构你的POST接口:

app.post('/', (req, res) => {
  try {
    // 经过express.json()解析后,req.body已经是现成的JSON对象,不需要再JSON.parse
    const objectItems = req.body._items[0];
    console.log(objectItems);

    // 这里写你的MySQL数据插入逻辑...

    res.status(200).json({ message: '数据提交成功', data: objectItems });
  } catch (error) {
    console.error('处理请求出错:', error);
    res.status(400).json({ error: '请求格式错误或数据无效' });
  }
});

如果你是在调用外部API

如果你的callback是用来处理第三方API的响应(而不是解析当前请求的body),那应该把逻辑调整成这样(以request库为例):

const request = require('request');

app.post('/', (req, res) => {
  // 调用外部API
  request('https://your-external-api-url.com', (error, response, body) => {
    if (error) {
      return res.status(500).json({ error: '调用外部API失败' });
    }
    try {
      const object = JSON.parse(body);
      const objectItems = object._items[0];
      console.log(objectItems);
      // 执行MySQL写入操作...
      res.status(200).json({ data: objectItems });
    } catch (parseError) {
      console.error('解析外部响应出错:', parseError);
      res.status(400).json({ error: '外部API响应格式错误' });
    }
  });
});

最后检查Postman设置

别忘了确认你的POST请求配置:

  • 在Body标签下选择raw,然后格式选JSON
  • 输入的JSON内容要合法,比如没有多余的逗号、引号配对正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:39:03