PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

TypeError:impossibile chiamare il metodo 'query' di null - quando si chiama pg.connect con Heroku node.js

Ho avuto lo stesso problema con il mio sito e ciò che è stato più frustrante è che ha funzionato sul sito distribuito ma quando stavo cercando di eseguire il sito localmente (usando foreman) ho ricevuto questo errore. Dall'errore ho capito che non riesco a connettermi al database e da un ulteriore controllo questi sono i due motivi che hanno causato questo errore:

  1. Nessuna variabile di ambiente DATABASE_URL
    Per qualche motivo non avevo process.env.DATABASE_URL impostato nel mio file .env sebbene sia stato impostato correttamente sul sito remoto. Per risolvere questo problema puoi eseguire "heroku config" e copiare il DATABASE_URL richiesto nel tuo file .env locale (se questo file non esiste, creane uno).
    NOTA importante: Quando copi incolla le variabili, cambia il carattere ":" in "=".

  2. ?ssl=true non fa parte di DATABASE_URL
    Grazie alla correzione di cui sopra, il client ora sa dove connettersi ma non è ancora in grado di aprire la connessione a causa di problemi di autenticazione. Aggiungendo ?ssl=true al DATABASE_URL ha finalmente risolto il problema per me. Sembra che quando stai provando a connetterti dal sito remoto (server heroku) non devi passare il parametro ma quando stai provando a connetterti al database dal tuo computer locale hai bisogno di questa autenticazione per stabilire una connessione corretta.

Spero che ti aiuterà.