Intentar serializar una instancia de error usando JSON.stringify da como resultado un objeto vacío. Este comportamiento surge de los descriptores de propiedad ocultos del error.
Por qué falla JSON.stringify:
Los descriptores de propiedad para instancias de error se configuran con enumerable: false, lo que evita su propiedades se incluyan en la cadena.
Explorando propiedades y descriptores:
const error = new Error('sample message'); const propertyNames = Object.getOwnPropertyNames(error); propertyNames.forEach(property => console.log(property, Object.getOwnPropertyDescriptor(error, property)));
Salida:
stack { get: [Function], set: [Function], enumerable: false, configurable: true } arguments { value: undefined, writable: true, enumerable: false, configurable: true } type { value: 'custom message', writable: true, enumerable: false, configurable: true } message { value: 'custom message', writable: true, enumerable: false, configurable: true }
Solución alternativa usando Object.getOwnPropertyNames:
Para incluir propiedades de error en cadena, utilice JSON.stringify(err, Object.getOwnPropertyNames(err)). Esto proporciona acceso a propiedades no enumerables.
const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
Soluciones alternativas adicionales:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3