PG(Node-Postgres)池在连接时挂起...但仅在 Gatsby 内部?

PG (Node-Postgres) Pool Hangs on Connect ... But Only Inside Gatsby?

注意: 这主要是关于 pg 或 Node-PostgreSQL 模块的问题。它包含来自 Gatsby 和 Postgraphile 的详细信息,但我不需要这三者的专业知识,只需 pg.

我有一个与使用 PostGraphile 的 Express 服务器配合使用的数据库。我也可以在命令行通过 node 访问它...

const { Pool } = require("pg");
const pool = new Pool({ connectionString: myDbUrl });
pool.connect().then(() => console.log('connected'));
// logs 'connected' immediately

完全相同的数据库也 以前 通过 gatsby-source-pg 插件与 Gatsby/PostGraphile 配合得很好。 .. 但最近我更换了开发机器,当我尝试构建或 运行 开发服务器时,Gatsby 挂在“源和转换节点”步骤。当我调试它时,它挂在对 pool.connect().

的调用上

所以我实际上有两个代码库都使用 PostGraphile,都具有相同的配置,一个有效,另一个无效。更奇怪的是,如果我在 node_modules 中编辑 Gatsby 插件的源代码,使其使用 完全相同的代码 (我可以 运行命令行成功)...它仍然挂起。

我唯一能想到的是其他一些 Gatsby 插件正在用完所有连接而不是释放它们,但据我所知(例如通过 grep-ing node_modules) 甚至没有其他插件使用 pg.

所以我真的有两个问题:

A) 谁能帮我理解为什么 connect 会挂起?如果你能帮助我理解为什么它会在 Gatsby 内部使用已知良好的配置和(在某些环境因素发生变化后)这样做,那么加分?

B) 谁能帮我解决这个问题?如果它可能是某种“以前的代码忘记释放连接”的问题,我有什么办法可以测试吗?如果我能以某种方式记录 new Pool().areYouBroken(),那将非常有用。

烦人的回答:因为一个错误(谢谢@charmander)。有关更多详细信息,请参阅:https://github.com/brianc/node-postgres/issues/2300

P.S。我从来没有找到任何类型的 new Pool().areYouBroken() 函数。

尝试:

npm install pg@latest

这就是让我的 pool/connection 开始按预期工作的原因。