Mientras escribe un registrador, lo ideal es acceder al nombre de las funciones. Desafortunadamente, esto es bastante complicado con el modo estricto . He recurrido a pasar mensajes de registro como errores como:
log(new Error("Foobar") y luego cortando el error.stack para adaptarlo. Me encontré con un problema en el que el nombre de la función útil se omite en la salida de la pila.
// helpfulName.ts export const helpfulName = ()=> wrapper(networkCallWithSimilarName()) // wrapper.ts export async function* wrapper(generator){ log(new Error("Foobar") return generator // I actually for of ... yield here } // index.ts (async ()=>{ for await (const response of helpfulName()) { ... })()con la salida de registro esperada algo así como
at wrapper wrapper.ts(line) at wrapper.next (<anonymous>) at helpfulName helpfulName.ts(line) at index.ts(line) pero en su lugar helpfulName no se encuentra
at wrapper wrapper.ts(line) at wrapper.next (<anonymous>) at index.ts(line) Probé varias iteraciones de las funciones de ES6/ES5 y diferentes métodos para exportar y envolver en más funciones, pero no pude obtener ninguna referencia a helpfulName.ts debido a un error en wrapper() . es posible? ¿Por qué no está en el seguimiento de la pila?