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 开始按预期工作的原因。
注意: 这主要是关于 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 开始按预期工作的原因。