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

Node.js Express POST接口用curl发JSON报Unexpected token u错误解决方案

问题原因
  • 报错的核心是服务端express.json中间件解析请求体时,收到了不符合JSON语法规范的内容,解析失败抛出错误。
  • 你的问题是Windows平台原生命令行(CMD/PowerShell)的单引号处理规则导致:Windows命令行不支持将单引号识别为字符串边界符,执行你给出的curl命令时会自动丢弃-d参数后的单引号,实际发送的请求体为{user:"jane.doe"},不符合JSON要求键必须用双引号包裹的规范,因此解析到第2个字符(位置1的u)时触发语法错误。
修复方案

你可以根据自己的使用场景选择以下任意一种方案:

方案1:修改curl命令适配Windows CMD环境

把参数外层的单引号替换为双引号,同时转义JSON内部的双引号即可:

curl -X POST -d "{\"user\":\"jane.doe\"}" -H "Content-Type: application/json" http://localhost:3000/

方案2:适配PowerShell环境

PowerShell的转义规则更严格,可选择以下任意一种写法:

# 写法1:JSON内部双引号重复两次实现转义
curl -X POST -d '{""user"":""jane.doe""}' -H "Content-Type: application/json" http://localhost:3000/

# 写法2:添加--%参数禁用PowerShell的解析逻辑
curl -X POST --% -d "{\"user\":\"jane.doe\"}" -H "Content-Type: application/json" http://localhost:3000/

方案3:跨平台通用方案(无转义问题)

将JSON内容写入独立文件,curl直接读取文件内容发送,彻底避免命令行转义问题:

  1. 新建data.json文件,写入合法JSON内容:
{"user":"jane.doe"}
  1. 执行curl命令:
curl -X POST -d @data.json -H "Content-Type: application/json" http://localhost:3000/

非核心优化建议

你当前的POST接口代码中,res.send写在console.log之前,虽不影响现有功能,但建议把响应返回逻辑放在业务逻辑之后,避免后续新增逻辑时出现「响应已发送仍执行后续代码」的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 11:09:02