[英]how to handle body-parser errors in express nodejs
我正在使用以下數據在 Node 上訪問 Web 服務,
我的請求數據是:
{
"first_name":"surinder",,
"last_name":"rawat",
"email":"surinder.rawat@testcompany.com",
"phone":"1234567890",
"password":"surinder",
"user_type":"H",
"device_type":"A"
}
並收到以下錯誤:
Connect
400 SyntaxError: Unexpected token ,
at Object.parse (native)
at parse (/home/surinder/workspace/HappyHakka/node_modules/body-parser/lib/typs
/json.js:76:17)
at /home/surinder/workspace/HappyHakka/node_modules/body-parser/lib/read.js:98:18
at IncomingMessage.onEnd (/home/surinder/workspace/HappyHakka/node_modules/body-parser
/node_modules/raw-body/index.js:136:7)
at IncomingMessage.g (events.js:180:16)
at IncomingMessage.emit (events.js:92:17)
at _stream_readable.js:943:16
at process._tickCallback (node.js:419:13)
我故意使用雙逗號來得到這個錯誤。 我想知道如何處理此錯誤並以正確的格式向用戶顯示錯誤
謝謝
從文檔-
在其他app.use()
和路由調用之后,您最后定義錯誤處理中間件; 例如:
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(function(err, req, res, next) {
// error handling logic
console.error(err.stack);
res.status(500).send('Something broke!');
});
它與body-parser和raw-body包相關,如果你想以更健壯的方式解決這個問題,為什么和處理從 body parser 拋出的所有錯誤,請使用這個中間件
https://github.com/ntedgi/express-body-parser-error-handler
$ npm i express-body-parser-error-handler
例如,它將處理從 body-parser 拋出的所有常見錯誤
'encoding.unsupported', 'entity.parse.failed', 'entity.verify.failed', 'request.aborted', 'request.size.invalid', 'stream.encoding.set', 'parameters.too.many ', 'charset.unsupported', 'encoding.unsupported', 'entity.too.large'
用法示例:
const bodyParserErrorHandler = require('express-body-parser-error-handler')
const { urlencoded, json } = require('body-parser')
const express = require('express')
const app = express();
router.route('/').get(function (req, res) {
return res.json({message:"🚀"});
});
// body parser initilization
app.use(urlencoded({extended: false, limit: defaultLimitSize}));
app.use('/', json({limit: '250'}));
// body parser error handler
app.use(bodyParserErrorHandler());
app.use(router);
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.