我正在尝试使用 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 数据库执行任何操作吗?
答案 0 :(得分:1)
看来,该节点没有读取 .env 文件。 你可以用
检查console.log(process.env.DB_PASSWORD);
例如,它可以通过包 'dotenv' 修复。
npm i --save dotenv
然后在 index.js 的第一行
require('dotenv').config();
答案 1 :(得分:1)
检查您的 postgres 密码是否正确。我在 Mac 上工作时遇到了类似的问题,默认情况下 posgreSQL 用户是“posgres”,密码是“root”
就我而言,我有类似的东西
...
USER: "postgres",
PASSWORD: "",
...
哪个产生了错误