Estoy trabajando en un proyecto de verificación de documentos. mi código funciona cuando existe el documento o cuando la persona registrada emitió el documento. pero falla y devuelve un error de "final inesperado de JSON" cuando la persona registrada no emite el documento (por ejemplo, para un nuevo usuario). el error se devuelve cuando utilicé JSON. parse (documentos) en Ejs. ¿Cómo puedo detectar el error con try-catch o cualquier otro medio en EJS? aquí está el resultado del código cuando se encontró el documento (salida esperada)
<% console.log('fit', JSON.parse(documents, null, '\t')) %> Output fit [ { Key: 'DOCUMENT0', Record: { name: 'bachelor of science degree', url: 'https://bitcoin.org/ggg.pdf', issuedBy: 'sol123', dateOfIssuance: '12:18 PM, 25 September, 2021', hashedDoc: 'dac729a8acf4b8a88f73f5bd84206c34e01e0992efa251b772f68696e2c2539c9ed0090e73ef6b87dc24e3177c6fd5341c3e9e24ef14267ce07ab9428aeed897', docType: 'Whitepaper' } } ]El problema es cuando el documento no se encuentra (por ejemplo, si el usuario es nuevo y aún no ha emitido el documento);
SyntaxError: /home/verification/fabcar/javascript/views/pages/dashboard.ejs:15 13| <div class="list-group" id="list-tab" role="tablist" style="margin-top: 10px;"> 14| >> 15| <% JSON.parse(documents).forEach(document => { %> 16| <a class="list-group-item list-group-item-action" id="<%= document.Key %>" data-bs-toggle="tab" 17| href="#list-<%= document.Key %>" role="tab" aria-controls="list-<%= document.Key %>" style="min-width: 200px;"><%= document.Key %></a> 18| <% }) %> Unexpected end of JSON input at JSON.parse (<anonymous> lo que quiero es, ¿cómo puedo mostrar el mensaje NO DOCUMENT ISSUED en EJS cuando no hay ningún documento emitido por el usuario? por favor necesito su ayuda soy nuevo en javaScript y ejs.
puedes usar intentar atrapar
try { let user = JSON.parse(json); } catch (err) { alert( "user is new and not yet issued document" ); console.log( err.name ); console.log( err.message ); }al hacerlo, puede verificar cada error y responder en consecuencia.
o bien use la función de validación verdadera o falsa como la siguiente y continúe en consecuencia
function isValidJSON(text) { try { JSON.parse(text); return true; } catch { return false; } }Actualizado para la pregunta: Cómo crear try catch en ejs
Aquí hay un ejemplo de Try Catch.
<% function isValidJSON(text) { try { JSON.parse(text); return true; } catch { return false; } } var json1 = '{"item" : {"item2" : "item Data"}}'; var json2 = '{"item" : {"item2" : "item Data}}'; %> pasing json <% if(isValidJSON(json1)) { %> <p>Valid jsonr!</p> <% } else { %> <p>Invalid Json!</p> <% } %> pasing json <% if(isValidJSON(json2)) { %> <p>Valid jsonr!</p> <% } else { %> <p>Invalid Json!</p> <% } %>puede ver que json1 es válido y json2 no es válido.