【问题标题】:Connections to postgres database failure连接到 postgres 数据库失败
【发布时间】:2021-07-14 12:18:03
【问题描述】:

我正在尝试使用 node-express-postgres 实现身份验证服务。

我将池配置为:

const Pool = require('pg').Pool;

const pool = new Pool({
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME, 
    host: process.env.DB_HOST,
    port: 5432
});

module.exports = pool;

我正在尝试执行以下调用作为连接的简单测试:

const express = require('express');
const router = express.Router();
const pool = require('../db');
const bcrypt = require('bcryptjs');

router.post('/login', async (req, res) => {
    try {
        let temp = await pool.query("SELECT * FROM records");
        console.log(temp)
    } catch (error) {
        console.log(error.message);
    }
});

当我向此端点发送发布请求时,我的应用程序崩溃并出现以下错误: Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string

我检查了我所有的环境变量,它们是正确的。 知道为什么它无法对 postgres 数据库进行任何操作吗?

【问题讨论】:

  • 什么给了console.log( typeof process.env.DB_PASSWORD )
  • 它返回一个字符串
  • 我建议在你的 db.js 文件中为你的 db 实现 connect 方法,这样,当它被包含在另一个文件中时,我会自动运行 connect 操作然后做其他事情
  • 我看到 pool.connect() 出现同样的错误
  • @nimrodfeldman 你能解决这个错误吗?

标签: node.js postgresql authentication


【解决方案1】:

检查你的IDE文件夹中的路径,当我检查时,它在下面的一个路径中,所以我将它移动到正确的文件夹中并繁荣,一切正常。

【讨论】:

    【解决方案2】:

    通过更新 npm 脚本修复它。

    cross-env NODE_ENV=development nest start
    

    安装了“cross-env”来设置 NODE_ENV。 如果我们的代码找不到 .development.env 文件或者找不到密码,就会抛出这个错误。

    【讨论】:

      【解决方案3】:

      您可能应该在配置中指明您的 .env 文件位置

      require('dotenv').config({ path: '../.env' });
      

      dotenv configurations

      【讨论】:

        【解决方案4】:

        为我配置“dotenv”解决了错误

        require('dotenv').config();
        

        【讨论】:

          【解决方案5】:

          检查您的 postgres 密码是否正确。我在使用 mac 时遇到了类似的问题,默认情况下 posgreSQL 用户是“posgres”,密码是“root”

          在我的情况下,我有类似的东西

          ...
          
            USER: "postgres",
          
            PASSWORD: "",
          ...
          

          产生了错误

          【讨论】:

            【解决方案6】:

            看来,该节点没有读取 .env 文件。 你可以检查一下

            console.log(process.env.DB_PASSWORD);
            

            例如,可以使用包 'dotenv' 来修复它。

            npm i --save dotenv
            

            然后在 index.js 的第一行

            require('dotenv').config();
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-07-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-01-07
              • 1970-01-01
              • 2022-09-28
              相关资源
              最近更新 更多