为什么NestJS mysql查询错误不包含所有执行上下文,而是在进程中停止。\u勾选返回?

为什么NestJS mysql查询错误不包含所有执行上下文,而是在进程中停止。\u勾选返回?,mysql,typescript,nestjs,Mysql,Typescript,Nestjs,更新: Node.jsv10到14.15.0似乎在堆栈跟踪方面存在一些错误。我的问题在更新到14.16.1后得到解决。 复制此问题的小项目: 我有一个如下的调用执行: 1)users.controller.ts调用在try-catch块中等待插入(表名称、查询、数据)。 2) mysql.service.ts实现insert()方法,该方法调用 3) query()由于不存在表名而拒绝承诺的npm模块。 我得到的堆栈跟踪如下所示: [Nest]31018-2021年8月5日下午6:55:2

更新: Node.jsv1014.15.0似乎在堆栈跟踪方面存在一些错误。我的问题在更新到14.16.1后得到解决。

复制此问题的小项目:

我有一个如下的调用执行:

1)users.controller.ts调用在try-catch块中等待插入(表名称、查询、数据)。
2) mysql.service.ts实现insert()方法,该方法调用
3) query()由于不存在表名而拒绝承诺的npm模块。
我得到的堆栈跟踪如下所示:

[Nest]31018-2021年8月5日下午6:55:20[POST/api/users]内部错误+20932ms
错误:ER_NO_此类表:表'agro_ajenda_test.t_user'不存在
在Query.Sequence._packetToError(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
在Query.ErrorPacket(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/protocol/sequences/Query.js:79:18)
at Protocol._parsePacket(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/Protocol/Protocol.js:291:23)
在Parser._parsePacket(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/protocol/Parser.js:433:10)
在Parser.write(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/protocol/Parser.js:43:10)
在Protocol.write(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/Protocol/Protocol.js:38:16)
在插座上。(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/Connection.js:88:28)
在插座上。(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/Connection.js:526:10)
在Socket.emit(events.js:198:13)
在addChunk(_stream_readable.js:288:12)
--------------------
在协议队列中(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node\u modules/mysql/lib/Protocol/Protocol.js:144:48)
在Connection.query(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/node_-modules/mysql/lib/Connection.js:198:25)
在connect.then(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/dist/services/mysql/mysql.service.js:27:22)
在进程中。_tick回调(内部/process/next_tick.js:68:7)
最后一个上下文是

at process.\u tick回调(internal/process/next\u tick.js:68:7)
但应该是这样的

at insert()(/home/babalaris/Development/web/nestjs/agro-ajenda-backend/dist/controllers/users/users.controller.js:27:22)
出于某种原因,它不会告诉我在哪里捕获错误,但堆栈会停止 在这个过程中

其他mysql.MysqlError,如ER\u BAD\u DB\u ERROR包含来自users.controller.js文件的调用,但是ER\u NO\u这样的表没有


发生了什么事?

更新

此错误存在于节点
v10.24.0
,将节点升级到
12+
可以解决此问题


正如我在评论中所说,我有不同的结果。 因此,我检查了不同的节点版本,发现v10没有正确处理错误,并返回与您提到的相同的错误

请问您是否正在使用节点10


如果是,您是否可以尝试下一个LTS
节点12
或最新的节点16,以查看问题是否消失。

我只是使用不同的输出运行您的代码:在AppService.insert(/xxx/dist/app.service.js:33:16)在processtick和拒绝(内部/process/task_queues.js:97:5)在async AppController.getHello(xxx/dist/app.controller.js:23:20)是的,我当前的节点版本是
v10.24.0
。哇,我更新到了下一个稳定的版本
v14.16.1
,它可以工作!!!所以这不是我的错误!这是我第一次遇到这种情况,通常是我遇到问题时100%出现这种情况,错误是我的错,而不是我正在使用的技术。你可以编辑你的答案,在节点中提到这个错误
v10.24.0
。我接受了你的回答!