PG (Node-Postgres) 池在 Connect 上挂起......但仅限于 Gatsby 内部?

mac*_*ost 3 node.js node-postgres gatsby postgraphile

注意:这主要是关于 Node-PostgreSQL 模块的问题pg。它包含来自 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

所以我真的有两个问题:

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

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

obl*_*n02 6

尝试:

npm install pg@latest
Run Code Online (Sandbox Code Playgroud)

这就是让我的池/连接开始按预期工作的原因。