JSON.stringify를 사용하여 오류 인스턴스를 직렬화하려고 하면 빈 개체가 생성됩니다. 이 동작은 오류의 숨겨진 속성 설명자에서 발생합니다.
JSON.stringify가 실패하는 이유:
오류 인스턴스의 속성 설명자는 열거 가능: false로 설정되어 오류가 발생하는 것을 방지합니다. 속성이 문자열화에 포함되지 않도록 합니다.
속성 탐색 및 설명자:
const error = new Error('sample message'); const propertyNames = Object.getOwnPropertyNames(error); propertyNames.forEach(property => console.log(property, Object.getOwnPropertyDescriptor(error, property)));
출력:
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 }
Object.getOwnPropertyNames를 사용한 해결 방법:
문자열화에 오류 속성을 포함하려면, JSON.stringify(err, Object.getOwnPropertyNames(err)). 이는 열거 불가능한 속성에 대한 액세스를 제공합니다.
const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
추가 해결 방법:
위 내용은 오류를 직렬화할 때 JSON.stringify가 빈 개체를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!