嘗試使用 JSON.stringify 序列化錯誤實例會導致空物件。此行為是由錯誤的隱藏屬性描述符引起的。
為什麼 JSON.stringify 失敗:
錯誤實例的屬性描述符設定為 enumerable: 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));
其他解決方法:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3