我想知道执行代码时是否在尝试之间发生了一些错误,然后需要知道该函数中的行号。
我已经尝试过Tracer它给了我函数名称,堆栈跟踪,但它给出的行号是错误的,因为它给了我从调用
trace logger
的位置而不是从发生错误的位置的行号。
我已经尝试过下面的代码,它可以给我行号
debugLine(error:Error) {
if (error.stack!=undefined) {
let frame = error.stack.split("\n")[1];
let lineNumber = frame.split(":")[1];
let functionName = frame.split(" ")[5];
return functionName + ":" + lineNumber + " " + error.message;
}
}
但是如果堆栈跟踪很复杂,那么它不能保证正确的行号。那么哪种方法才能准确、快速地获取行号呢?
您可能会看到编译后的 Javascript (.js) 文件中的行号,而不是原始 Typescript 源(.ts 文件),这将导致行号出现各种差异,具体取决于已完成的转换量。
您可以使用开发中的
source-map-support
包来解决此问题。
npm install --save-dev source-map-support
确保在应用程序启动期间安装该软件包(例如index.ts)。您需要在部署之前删除它或添加一些环境开关。
require('source-map-support').install()
或
import {install} from 'source-map-support'
install()
并确保 Typescript 编译器发出源映射
tsconfig.json
{
"compilerOptions": {
"sourceMap": true
}
}