I have a router.post as follows
router.post('/newlead', async (payload, res, next) => {
...
...
...
});
Payload is coming on the body, as a JSON object, for example
{
"name": "Danielle",
"age": 26
}
When I send a body like this:
{
"name": "\Danielle",
"age": 26
}
I get the error
SyntaxError: Unexpected token in JSON at position X.
I tried by JSON.parse(payload.body) within a try{}catch{} and I still get the error, its like try/catch wouldn't be there.
This is happening with POSTMAN, but not with the Angular application.
Is there a way to identify this error and display a message to the user?
UPDATE: The code is too long to post, but this is what is not working:
const express = require('express');
const sql = require('mssql');
const router = express.Router();
router.post('/newlead', async (payload, res, next) => {
try{
let test=JSON.parse(payload.body)
console.log("ok")
}
catch(err) {
console.log(err)
return;
}
res.json(payload.body)
});
module.exports = router;
This is my middleware at index.js
//Middleware
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', '*');
res.header("Access-Control-Allow-Headers", "accept, content-type");
next();
})
app.use(express.json()); //to read bodies
Your express.json()
middleware is encountering an error when parsing the invalid JSON sent by the client, and the framework is serving up a default error handling response.
To handle the error in a custom way, consider installing custom error handling middleware like this:
app.use(function (err, req, res, next) {
if (err.type === 'entity.parse.failed') {
// Your custom error handler here
res.status(500).send('The client sent invalid JSON');
} else {
// Something else went wrong. Pass it along.
next(err);
}
})
Important: ensure this middleware is installed last, after all other app.use
directives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With