gpt4 book ai didi

node.js - Supertest + Knex.js = 当前客户端上没有定义池

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:31 24 4
gpt4 key购买 nike

我正在使用 supertest(在 Mocha 内)来测试我的应用程序,该应用程序目前正在使用 knex.js 来实现数据库目的。

旧版本的 knex (0.5.x) 一切运行良好。现在我想使用最新的 knex 版本。

大多数场景下,使用

request = supertest(app)

对我来说工作得很好,但是还有其他场景我需要测试多个请求而不重复使用cookie,所以...

request = supertest.agent(app)

这会发生什么?

最终出现主题中描述的错误。我在 knex 库中添加了一些自定义日志“acquireConnection”、“releaseConnection”、“initializePool”和“destroy”函数,以查看发生了什么,输出如下:

Adquiring connection from pool {someCustomPoolIdYSet)
Adquiring connection from pool {someCustomPoolIdYSet)
Releasing connection from pool {someCustomPoolIdYSet)
Adquiring connection from pool {someCustomPoolIdYSet)
Adquiring connection from pool undefined
[Error] ........ "There is no pool defined on the current client"

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

所以,我们终于发现了!

问题出在 Passport.js 上,默认情况下它始终被用作单例。每次我们引导应用程序时,都会在 Passport 中注入(inject)一个新的序列化器,但它会保留以前的序列化器。然后,那些一开始就被注入(inject)的人的池子就被毁了……然后轰隆隆!

关于node.js - Supertest + Knex.js = 当前客户端上没有定义池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com