ПРИМЕЧАНИЕ: В основном это вопрос о модуле pg
или Node- PostgreSQL. В нем есть детали из Gatsby и Postgraphile, но мне не нужен опыт по всем трем, просто pg
.
У меня есть база данных, которая отлично работает с сервером Express, использующим PostGraphile. Я также могу получить к нему доступ через node
в командной строке ...
const { Pool } = require("pg");
const pool = new Pool({ connectionString: myDbUrl });
pool.connect().then(() => console.log('connected'));
// logs 'connected' immediately
Точно такая же база данных также ранее отлично работала с Gatsby / PostGraphile через подключаемый модуль gatsby-source-pg
... но недавно я сменил машины разработки, и когда я пытаюсь создать или запустить сервер разработки, Гэтсби зависает на шаге «источник и преобразование узлов». Когда я отлаживаю его, он зависает при вызове pool.connect()
.
Итак, у меня буквально есть две кодовые базы, использующие PostGraphile, обе с одной и той же конфигурацией, и одна работает, а другая нет. Еще более странно, если я отредактирую исходный код подключаемого модуля Gatsby в node_modules
, чтобы он использовал точно такой же код (который я могу успешно запустить из командной строки) ... он все равно зависает.
Единственное, о чем я могу думать, это то, что какой-то другой плагин Gatsby использует все соединения и не освобождает их, но, насколько я могу судить (например, с помощью grep-ing через node_modules
) ни один другой плагин не использует даже pg
.
Так что на самом деле у меня есть два вопроса:
A) Может ли кто-нибудь помочь мне понять, почему connect
зависает? Бонусные баллы, если вы можете помочь мне понять, почему это должно происходить с заведомо хорошей конфигурацией и только внутри Gatsby (после изменения некоторых факторов окружающей среды)?
B) Кто-нибудь может помочь мне исправить Это? Если это может быть проблема типа «предыдущий код забыл освободить соединения», могу ли я как-нибудь проверить это? Если бы я мог просто записать new Pool().areYouBroken()
как-нибудь, это было бы невероятно полезно.