Estoy usando la API PnP SPFx en mi proyecto y estoy lidiando con el manejo de errores. En mi código hay pocas llamadas a la API y necesito obtener un seguimiento completo de la pila de las llamadas que se realizaron para poder ver de dónde proviene el error.
También probé el objeto Error, Error.captureStackTrace() pero obviamente en Typescript NO funciona.
Muestra
public async apiCallWrapper<T>(callback: ICallback<T>) : Promise<[T, ResponseStatus, string]> { try { const result : T = await callback(); return [result, ResponseStatus.Success, 'Success']; } catch(e) { console.log(e.stack) console.trace() return [null, ResponseStatus.Other, 'Other kind of error']; } >> console.log(e.stack) Error: Error making HttpClient request in queryable [400] Bad Request ::> {"odata.error":{"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message": {"lang":"en-US","value":"Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."}}} at new HttpRequestError (https://localhost:4321/dist/sx-web-part.js:21243:28) at Function.<anonymous> (https://localhost:4321/dist/sx-web-part.js:21258:47) at step (https://localhost:4321/dist/sx-web-part.js:19733:23) at Object.next (https://localhost:4321/dist/sx-web-part.js:19714:53) at fulfilled (https://localhost:4321/dist/sx-web-part.js:19704:58) >> console.trace() overrideMethod @ react_devtools_backend.js:2526 (anonymous) @ BaseApi.ts:54 step @ sx-web-part.js:973 (anonymous) @ sx-web-part.js:954 fulfilled @ sx-web-part.js:945 Promise.then (async) step @ sx-web-part.js:947 rejected @ sx-web-part.js:946 Promise.then (async) step @ sx-web-part.js:947 (anonymous) @ sx-web-part.js:948 0uds.__awaiter @ sx-web-part.js:944 0uds.BaseApi.apiCallWrapper @ BaseApi.ts:40public async apiCallWrapper<T>(callback: ICallback<T>) : Promise<[T, ResponseStatus, string]> { >> stack = getStack(); try { const result : T = await callback(); return [result, ResponseStatus.Success, 'Success']; } catch(e) { console.log(e.stack) << stack here is not complete console.trace() return [null, ResponseStatus.Other, 'Other kind of error']; } public getStack() { let stack = ''; try { throw new Error(); } catch(e) { stack = e.stack; } return stack; }