1

我使用 stacktrace.js 来获取有关异常的正确堆栈跟踪,但我想知道是否可以提取部分代码以获取异常发生位置的上下文

有没有什么好的和简单的方法来做到这一点?

4

1 回答 1

1

因此,在阅读完代码后,答案是肯定的,并且 stacktrace 已经将源代码存储在缓存中。我们可以这样检索它:

创建一个助手:

async extractFromCache(cache: any, filename: string) {
  let originContent: string = "";
  
  if (cache[filename]) {
    if (typeof cache[filename] === "string") {
      originContent = cache[filename];
    } else if (typeof cache[filename] === "string" && cache[filename].constructor.name === "ZoneAwarePromise") {
      originContent = await cache[filename];
    }
  }

  return originContent;
}

然后使用 stacktracejs 需要这样做:

const cache = {};
const trace = await StackTrace.fromError(message, { sourceCache: cache });
const sourceCode = await extractFromCache(cache, trace[0].fileName);

然后使用 trace.lineNumber 从 sourceCode 之前和之后提取一些行!

于 2020-11-27T13:53:01.510 回答