TypeORM 堆栈跟踪未显示我的代码中的错误来源

Jør*_*Vik 8 node.js typescript typeorm

在我正在进行的一个项目中,偶尔我会遇到一些随机的 TypeORM 错误,这些错误可能很难解决,因为 TypeORM 的堆栈跟踪没有显示我的代码中的错误来源。它只会显示来自 TypeORM NPM 包的堆栈跟踪。

关于如何解决这个问题的任何建议?

以下是最近发生的此类问题的示例

(node:5096) UnhandledPromiseRejectionWarning: QueryFailedError: Error: Invalid usage of the option NEXT in the FETCH statement.
    at new QueryFailedError (/home/myuser/repos/somefolder/my-project/api/src/error/QueryFailedError.ts:9:9)
    at /home/myuser/repos/somefolder/my-project/api/src/driver/sqlserver/SqlServerQueryRunner.ts:223:37
    at /home/myuser/repos/somefolder/my-project/api/node_modules/mssql/lib/base.js:1293:25
    at Request.userCallback (/home/myuser/repos/somefolder/my-project/api/node_modules/mssql/lib/tedious.js:661:15)
    at Request._this.callback (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/request.js:61:27)
    at Connection.endOfMessageMarkerReceived (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/connection.js:1944:20)
    at Connection.dispatchEvent (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/connection.js:1012:38)
    at Parser.<anonymous> (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/connection.js:812:18)
    at Parser.emit (events.js:310:20)
    at Parser.EventEmitter.emit (domain.js:482:12)
    at Parser.<anonymous> (/home/myuser/repos/somefolder/my-project/api/node_modules/tedious/lib/token/token-stream-parser.js:54:15)
    at Parser.emit (events.js:310:20)
    at Parser.EventEmitter.emit (domain.js:482:12)
    at addChunk (/home/myuser/repos/somefolder/my-project/api/node_modules/readable-stream/lib/_stream_readable.js:291:12)
    at readableAddChunk (/home/myuser/repos/somefolder/my-project/api/node_modules/readable-stream/lib/_stream_readable.js:278:11)
    at Parser.Readable.push (/home/myuser/repos/somefolder/my-project/api/node_modules/readable-stream/lib/_stream_readable.js:245:10)
Run Code Online (Sandbox Code Playgroud)

Car*_*ini 1

您只需在连接选项中设置logging: true即可启用所有查询和错误的日志记录。

请参阅了解更多信息。

此外,您还可以在连接选项中设置不同类型的日志记录。

启用此功能将在终端中显示 typeorm 执行的每个 SQL 命令。

  • 遗憾的是,即使使用自定义记录器,日志记录也无法解决堆栈跟踪问题。我相信堆栈跟踪问题来自 typeorm 调用固有的异步性质。所有查询都是异步的,这会机械地丢失堆栈跟踪。虽然我愿意错 (2认同)