如何查找在打字稿中生成错误的函数中的行号?

问题描述 投票:0回答:1

我想知道执行代码时是否在尝试之间发生了一些错误,然后需要知道该函数中的行号。

我已经尝试过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 node.js error-handling v8 stack-trace
1个回答
0
投票

您可能会看到编译后的 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
   }
}

参见https://stackoverflow.com/a/50363693/209288

© www.soinside.com 2019 - 2024. All rights reserved.