Я получаю SyntaxError: Unexpected string in JSON at position 59
ошибку в формате HTML, когда формат данных JSON недопустим.Я не знаю, почему он дает мне html вместо объекта ошибки.
Я установил свой заголовок, как показано ниже.
//header middlewares
app.use((req, res, next) => {
res.setHeader('Content-Type', 'application/json');
res.setHeader("Access-Control-Allow-Origin", "*");
next();
});
Я хочу отловить ошибку и отправить сообщение вниже формат.
{
"status":404,
"message":Unexpected string in JSON at position 59
}
Вот ошибка, которую я получаю.
<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>SyntaxError: Unexpected string in JSON at position 59<br> at JSON.parse (<anonymous>)<br> at parse (C:\Users\mydirectory\auth\node_modules\body-parser\lib\types\json.js: 89: 19)<br> at C:\Users\mydirectory\auth\node_modules\body-parser\lib\read.js: 121: 18<br> at invokeCallback (C:\Users\mydirectory\auth\node_modules\raw-body\index.js: 224: 16)<br> at done (C:\Users\my-directory\auth\node_modules\raw-body\index.js: 213: 7)<br> at IncomingMessage.onEnd (C:\Users\mydirectory\auth\node_modules\raw-body\index.js: 273: 7)<br> at IncomingMessage.emit (events.js: 203: 15)<br> at endReadableNT (_stream_readable.js: 1145: 12)<br> at process._tickCallback (internal/process/next_tick.js: 63: 19)
Я пытался пойматьэта ошибка.
app.use((err, req, res, next) => {
if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
console.error(err);
return res.status(400).send(err); // Bad request
}
next();
});
Но ответ, который я получаю сейчас, как показано ниже.
{
"expose": true,
"statusCode": 400,
"status": 400,
"body": "{\n\t\"username\":\n}",
"type": "entity.parse.failed"
}