PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

TypeError :Impossible d'appeler la méthode 'query' de null - lors de l'appel de pg.connect avec Heroku node.js

J'ai eu le même problème avec mon site et ce qui était plus frustrant, c'est que cela fonctionnait sur le site déployé mais lorsque j'essayais d'exécuter le site localement (en utilisant le contremaître), j'ai eu cette erreur. De l'erreur, j'ai compris que je ne parvenais pas à me connecter à la base de données et après une vérification plus approfondie, voici les deux raisons qui ont provoqué cette erreur :

  1. Aucune variable d'environnement DATABASE_URL
    Pour une raison quelconque, je n'avais pas le process.env.DATABASE_URL défini dans mon fichier .env bien qu'il ait été défini correctement sur le site distant. Pour résoudre ce problème, vous pouvez exécuter "heroku config" et copier le DATABASE_URL requis dans votre fichier .env local (si ce fichier n'existe pas, créez-en un).
    REMARQUE importante : Lorsque vous copiez-collez les variables, remplacez le caractère ":" par "=".

  2. ?ssl=true ne fait pas partie de DATABASE_URL
    Grâce au correctif ci-dessus, le client sait maintenant où se connecter mais il ne peut toujours pas ouvrir de connexion en raison de problèmes d'authentification. En ajoutant ?ssl=true à la DATABASE_URL, cela a finalement résolu le problème pour moi. Il semble que lorsque vous essayez de vous connecter depuis le site distant (serveurs heroku), vous n'avez pas besoin de passer le paramètre, mais lorsque vous essayez de vous connecter à la base de données depuis votre ordinateur local, vous avez besoin de cette authentification pour établir une connexion correcte.

J'espère que cela vous aidera.