refactor🎨: (阅读代码):utils.ts增加注释

master
yetao 3 weeks ago
parent 33bb60eae5
commit fde6f84bfd

@ -1,20 +1,39 @@
// 从 'common/fileSystemConfig' 模块中导入名为 'EnvironmentVariable' 的类型。
// 'EnvironmentVariable' 可能是用于表示环境变量的类型定义,导入这个类型可以在当前模块中使用它进行类型标注等操作。
import type { EnvironmentVariable } from 'common/fileSystemConfig';
// 从当前模块中导入名为 'DEBUG' 的常量,推测它可能与日志记录的调试级别相关。
// './logging' 可能是一个包含日志记录相关功能的模块,'DEBUG' 常量可能用于控制日志输出的详细程度。
import { DEBUG } from './logging';
// 定义一个名为 prepareStackTraceDefault 的函数,用于生成错误对象的栈跟踪字符串。
function prepareStackTraceDefault(error: Error, stackTraces: NodeJS.CallSite[]): string {
// 使用 reduce 方法遍历栈跟踪数组,逐步构建栈跟踪字符串。
// 初始字符串为错误对象的名称和消息,如果没有名称则为 "Error",如果没有消息则为空字符串。
// 对于每个栈跟踪项,将其添加到字符串中,格式为 "\n\tat [栈跟踪项描述] ([栈跟踪项对应的函数名])"。
return stackTraces.reduce((s, c) => `${s}\n\tat ${c} (${c.getFunction()})`, `${error.name || "Error"}: ${error.message || ""}`);
}
// 定义一个名为 trimError 的函数,用于裁剪错误对象的栈跟踪信息。
function trimError(error: Error, depth: number): [string[], Error] {
// 保存原始的 Error.prepareStackTrace 函数。
const pst = Error.prepareStackTrace;
// 初始化裁剪后的字符串为空。
let trimmed = '';
// 临时修改 Error.prepareStackTrace 函数,以实现裁剪栈跟踪的目的。
Error.prepareStackTrace = (err, stack) => {
// 获取裁剪后的栈跟踪结果,从 depth + 1 开始裁剪。
const result = (pst || prepareStackTraceDefault)(err, stack.slice(depth + 1));
// 获取裁剪掉的部分,用于返回。
trimmed = (pst || prepareStackTraceDefault)(err, stack.slice(0, depth + 1));
return result;
};
// 捕获错误对象的栈跟踪信息。
Error.captureStackTrace(error);
// 强制更新错误对象的 stack 属性,触发新的栈跟踪生成。
error.stack = error.stack;
// 恢复原始的 Error.prepareStackTrace 函数。
Error.prepareStackTrace = pst;
// 返回裁剪掉的部分(分割成数组)和裁剪后的错误对象。
return [trimmed.split('\n').slice(1), error];
}
/**

Loading…
Cancel
Save