bodyParser.json 使用对应报错, 报错信息如下
SyntaxError: Unexpected token # in JSON at position 0
at JSON.parse (<anonymous>)
at createStrictSyntaxError (E:\XXXXX\node_modules\body-parser\lib\types\json.js:157:10)
at parse (E:\XXXXX\node_modules\body-parser\lib\types\json.js:83:15)
at E:XXXXX\node_modules\body-parser\lib\read.js:121:18
at invokeCallback (E:\XXXXX\node_modules\raw-body\index.js:224:16)
at done (E:\XXXXX\raw-body\index.js:213:7)
at IncomingMessage.onEnd (E:\XXXXX\node_modules\raw-body\index.js:273:7)
at emitNone (events.js:106:13)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
接口返回 400
问题:
- 有一个请求数据的方式不对,导致接口返回 400,该请求方式不能修改,所以只能从后台入手。
// 源头(bodyParser。json 解析的时候出错 发现请求类型不对,需要对路由进行特殊处理)
app.use(bodyParser.json({limit: '50mb'}));
解决办法:
// app.use(bodyParser.json({limit: '50mb'}));
app.use((req, res, next) => {
bodyParser.json()(req, res, (error) => {
if (error instanceof SyntaxError) {
// /explore/getDiagramByExploreKey/' 为400的那个接口地址, 进行特殊处理
if(req.path.indexOf('/explore/getDiagramByExploreKey/') > -1){
req.body.data = error.body
next()
return
}
res.sendStatus(400);
} else {
next();
}
});
});