node.js - PG(Node-Postgres)池在 Connect 上挂起……但仅在 Gatsby 内部?

标签 node.js gatsby node-postgres postgraphile

注意:这主要是关于 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 卡在“源和转换 Node ”步骤上。当我调试它时,它卡在对 pool.connect() 的调用上。

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

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

所以我真的有两个问题:

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

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

最佳答案

试试:

npm install pg@latest

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

关于node.js - PG(Node-Postgres)池在 Connect 上挂起……但仅在 Gatsby 内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63211544/

相关文章:

reactjs - React 如何在 Gatsby 上工作(静态生成?)

javascript - 网址未正确重定向到 GatsbyJs 中的特定页面

node.js - Node-postgres 日期未准确保存

node.js - 使用 node-postgres 在 postgres 中存储文件

node.js - 将 Async/Await 与 node-postgres 一起使用

node.js - Grails 应用程序中的 Nodejs

mysql - 使用 Nodejs 将推文 JSON 获取到 SQL 表中

angularjs - 使用 Protractor + Appium + SauceLabs

javascript - 预安装环境(Ruby/Rails、JavaScript/Node.js 等)的开发 VPS?

graphql - 如何根据 frontmatter 对 GraphQL 查询进行排序