ts-node/esm下如何将Symbol类型异常对象转为可读字符串?
解决ts-node/esm下Symbol类型异常的可读字符串转换问题
当.ts文件存在语法错误,使用ts-node/esm加载应用时,uncaughtException抛出的Symbol(nodejs.util.inspect.custom)类型异常,直接调用err.toString()会返回空值,以下是几种将其转换为可读字符串的实用方式:
利用Node.js内置的
util.inspect()
这个Symbol本身就是Node.js用于自定义对象检查的标识,util.inspect()会自动触发对应的自定义逻辑,完整输出错误详情:import util from 'util'; process.on('uncaughtException', (err) => { const readableError = util.inspect(err); console.error(readableError); });直接提取异常的
message属性
这类TS语法错误异常通常会携带message字段,直接读取该属性就能获取具体的错误描述:process.on('uncaughtException', (err) => { const readableError = err.message || '未知错误'; console.error(readableError); });兼容兜底处理
为了适配其他可能的异常类型,可以结合两种方式做兜底,优先用util.inspect解析,失败则 fallback 到toString():import util from 'util'; process.on('uncaughtException', (err) => { let readableError; try { readableError = util.inspect(err); } catch (e) { readableError = err.toString() || '无法解析的错误'; } console.error(readableError); });
内容的提问来源于stack exchange,提问作者T.Todua
相关产品推荐
相关产品推荐

