Der Versuch, eine Fehlerinstanz mit JSON.stringify zu serialisieren, führt zu einem leeren Objekt. Dieses Verhalten ergibt sich aus den versteckten Eigenschaftsdeskriptoren des Fehlers.
Warum JSON.stringify fehlschlägt:
Eigenschaftsdeskriptoren für Fehlerinstanzen werden mit enumerable: false festgelegt, wodurch deren verhindert wird Eigenschaften werden nicht in die Stringifizierung einbezogen.
Untersuchen von Eigenschaften und Deskriptoren:
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 }
Problemumgehung mit Object.getOwnPropertyNames:
Um Fehlereigenschaften einzuschließen Stringifizierung, verwenden Sie JSON.stringify(err, Object.getOwnPropertyNames(err)). Dies ermöglicht den Zugriff auf nicht aufzählbare Eigenschaften.
const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
Zusätzliche Problemumgehungen:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3