在Node.js中使用Express时如何自定义处理express.json()的JSON解析错误
Express JSON解析错误自定义处理方案
核心实现逻辑
express.json() 中间件解析非法JSON时会主动抛出带400状态码的SyntaxError,你只需要添加Express标准的错误处理中间件捕获这类错误,即可实现自定义响应和日志逻辑。
完整代码示例
const express = require('express'); const app = express(); app.use(express.json()); app.post('/', function(req, res) { // 你的正常业务逻辑 res.send('请求处理成功') }); // 错误处理中间件:必须放在所有路由和普通中间件之后,且声明四个参数 app.use((err, req, res, next) => { // 匹配JSON解析类错误 if (err instanceof SyntaxError && err.status === 400 && 'body' in err) { // 按你的需求返回自定义响应 return res.status(400).json({ code: 10001, message: '请求体JSON格式错误,请检查输入' }) } // 其他类型错误交给后续逻辑处理 next(err) }) app.listen(3000, () => { console.log('服务启动在3000端口') })
进阶配置(可选)
如果需要在解析阶段就介入处理,也可以通过express.json的verify参数实现:
app.use(express.json({ verify: (req, res, buffer) => { try { JSON.parse(buffer) } catch (e) { // 自定义错误信息,或者抛出自定义错误类型方便后续识别 e.customMessage = 'JSON格式不符合要求' throw e } } }))
内容的提问来源于stack exchange,提问作者Rettertyp
相关产品推荐
相关产品推荐

