A tentativa de serializar uma instância de erro usando JSON.stringify resulta em um objeto vazio. Esse comportamento surge dos descritores de propriedades ocultas do erro.
Por que JSON.stringify falha:
Descritores de propriedades para instâncias de erro são definidos com enumerável: false, evitando sua propriedades sejam incluídas na stringificação.
Explorando propriedades e descritores:
const error = new Error('sample message'); const propertyNames = Object.getOwnPropertyNames(error); propertyNames.forEach(property => console.log(property, Object.getOwnPropertyDescriptor(error, property)));
Output:
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 }
Solução alternativa usando Object.getOwnPropertyNames:
Para incluir propriedades de erro em stringificação, use JSON.stringify(err, Object.getOwnPropertyNames(err)). Isso fornece acesso a propriedades não enumeráveis.
const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
Soluções alternativas adicionais:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3