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

使用Prisma+NodeTS开发API时Insomnia测试报JSON解析错误求助

JSON解析报错排查方案

你的后端服务代码本身没有结构性问题,报错来自请求体解析阶段,是发送的请求不符合JSON解析要求导致的。

核心原因

你在Insomnia中填写的请求体开头{前夹带了一个不可见的零宽空格字符,body-parser在执行JSON.parse时遇到非法起始字符,直接抛出语法错误。
另外两种常见的同类触发场景:

  • Insomnia请求体格式选错,没有选JSON类型,导致请求头Content-Type不是application/json,或者传了非JSON格式的内容
  • 手写JSON时存在语法错误:比如尾逗号、中文引号、括号不配对,不过你贴出的可见JSON内容语法是正确的

修复操作

  1. 清空Insomnia当前请求的请求体输入框,手动逐行输入合法JSON,不要直接复制带隐形格式的外部内容:
{
  "name": "Eduard",
  "email": "Eduard@edu.com",
  "password": "1234"
}
  1. 确认请求体格式下拉选项选中JSON,Insomnia会自动带上正确的Content-Type: application/json请求头
  2. 重新发起POST请求到http://localhost:3333/users即可正常创建用户

可选代码优化

你当前代码缺少两类兜底逻辑,建议补上避免后续出现难排查的问题:

  1. 放开重复用户校验的注释,避免重复邮箱触发Prisma唯一键报错:
// createUserUseCase.ts 内补全校验
if (userAlreadyExists) {
  throw new Error("当前邮箱已注册")
}
  1. 在路由配置后增加全局错误捕获中间件,统一处理JSON解析错误、业务报错,避免直接把服务端堆栈抛给客户端:
// 放在 app.use(routes) 之后
app.use((err: Error, req: Request, res: Response, next) => {
  // 捕获JSON解析错误
  if (err.name === 'SyntaxError' && (err as any).type === 'entity.parse.failed') {
    return res.status(400).json({ message: "请求体格式错误,请传入合法JSON" })
  }
  // 其他业务错误统一返回
  return res.status(500).json({ message: err.message || "服务器内部异常" })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:12:21