Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
Try - Catch no responde correctamente cuando JSON tiene una barra invertida

Tengo un router.post de la siguiente manera

 router.post('/newlead', async (payload, res, next) => { ... ... ... });

La carga útil viene en el cuerpo, como un objeto JSON, por ejemplo

 { "name": "Danielle", "age": 26 }

Cuando envío un cuerpo como este:

 { "name": "\Danielle", "age": 26 }

me sale el error

 SyntaxError: Unexpected token in JSON at position X.

Intenté con JSON.parse(payload.body) dentro de un intento{}catch{} y sigo recibiendo el error, es como si try/catch no estuviera allí.

Esto está pasando con POSTMAN, pero no con la aplicación Angular.

¿Hay alguna forma de identificar este error y mostrar un mensaje al usuario?

ACTUALIZACIÓN: el código es demasiado largo para publicarlo, pero esto es lo que no funciona:

 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;

Este es mi middleware en 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
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Su middleware express.json() está encontrando un error al analizar el JSON no válido enviado por el cliente, y el marco está entregando una respuesta predeterminada de manejo de errores.

Para manejar el error de forma personalizada, considere instalar un middleware de manejo de errores personalizado como este:

 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); } })

Importante: asegúrese de que este middleware se instale en último lugar, después de todas las demás directivas app.use .

over 4 years ago · Santiago Trujillo Relatório

0

Necesita algo como el middleware body-parser porque express no puede analizar el json no válido . Es por eso que tu intento de captura no funciona

 // ... app.use(bodyParser.json()); // Handle a parse error app.use((err, req, res, next) => { if (err) { res.send('error parsing data') } else { next() } })
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda