【问题标题】:PG (Node-Postgres) Pool Hangs on Connect ... But Only Inside Gatsby?PG(Node-Postgres)池在 Connect 上挂起……但仅在 Gatsby 内部?
【发布时间】:2020-11-22 11:08:02
【问题描述】:

注意:这主要是关于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(),那将非常有用。

【问题讨论】:

    标签: node.js gatsby node-postgres postgraphile


    【解决方案1】:

    烦人的答案:因为一个错误(谢谢@charmander)。更多详情见:https://github.com/brianc/node-postgres/issues/2300

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

    【讨论】:

      【解决方案2】:

      试试:

      npm install pg@latest
      

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

      【讨论】:

        猜你喜欢
        • 2020-11-02
        • 2014-12-20
        • 2019-07-06
        • 2018-10-07
        • 1970-01-01
        • 1970-01-01
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多