postgres 与 node.js 连接时发生 SASL 错误

Mar*_*ior 6 javascript database postgresql connection node.js

尝试连接到数据库时出现以下错误:

\n
Conex\xc3\xa3o estbabelecida com sucesso\nAcessar http://localhost:3000\nServidor executando na porta 3000\nC:\\Users\\lopes\\Desktop\\Javascript\\novo-projeto\\ExpressEWebpack\\node_modules\\pg\\lib\\sasl.js:24\n    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string')\n    ^\n\nError: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n    at Object.continueSession (C:\\Users\\lopes\\Desktop\\Javascript\\novo-projeto\\ExpressEWebpack\\node_modules\\pg\\lib\\sasl.js:24:11)\n    at Client._handleAuthSASLContinue (C:\\Users\\lopes\\Desktop\\Javascript\\novo-projeto\\ExpressEWebpack\\node_modules\\pg\\lib\\client.js:257:10)\n    at Connection.emit (events.js:315:20)\n    at C:\\Users\\lopes\\Desktop\\Javascript\\novo-projeto\\ExpressEWebpack\\node_modules\\pg\\lib\\connection.js:114:12\n    at Parser.parse (C:\\Users\\lopes\\Desktop\\Javascript\\novo-projeto\\ExpressEWebpack\\node_modules\\pg-protocol\\dist\\parser.js:40:17)\n    at Socket.<anonymous> (C:\\Users\\lopes\\Desktop\\Javascript\\novo-projeto\\ExpressEWebpack\\node_modules\\pg-protocol\\dist\\index.js:11:42)\n    at Socket.emit (events.js:315:20)\n    at addChunk (internal/streams/readable.js:309:12)\n    at readableAddChunk (internal/streams/readable.js:284:9)\n    at Socket.Readable.push (internal/streams/readable.js:223:10)\n[nodemon] app crashed - waiting for file changes before starting...\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的连接代码

\n
require('dotenv').config();\nconst express = require('express');\nconst app = express(); \nconst { Sequelize } = require('sequelize');\nconst sequelize = new Sequelize(process.env.DB_URL);\n\ntry {\n    sequelize.authenticate();\n    console.log('Conex\xc3\xa3o estbabelecida com sucesso')\n}catch{\n    console.log('Erro ao estabelecer conex\xc3\xa3o');\n}\n\nconst session = require('express-session');\nconst flash = require('connect-flash');\n\nconst routes = require('./routes')\nconst path = require('path');\n\n\napp.use(express.urlencoded({  extended:true }));\n\napp.use(express.static(path.resolve(__dirname, 'public')));\n\nconst sessionOptions = session({\n    secret:process.env.cookie_secret,\n    store: new (require('connect-pg-simple')(session))(),\n    resave: false,\n    saveUninitialized: false,\n    cookie: {maxAge: 1000 * 60 * 60 * 24 * 7}\n});\n\napp.use(sessionOptions);\napp.use(flash());\n\napp.set('views', path.resolve(__dirname, 'src', 'views'));\napp.set('view engine', 'ejs');\n\napp.use(routes);\n\napp.listen(3000, () => {\n    console.log('Acessar http://localhost:3000');\n    console.log('Servidor executando na porta 3000');\n});\n
Run Code Online (Sandbox Code Playgroud)\n

我遇到此错误,但我的数据库根本没有密码,我没有密码这一事实可能会干扰连接吗?在某种程度上,密码因没有值而接收 null?我尝试解决,查看 sasl.js 上的内容,但没有多大帮助

\n

小智 11

pg_hba.conf文件(在 Windows 上,目录为\Program Files\PostgreSQL\13\data)中,将IPv4IPv6本地连接的 method 更改为trust。scram -sha-256加密机制需要密码,这就是它失败的原因。