JS连接PostgreSQL报错:SASL要求客户端密码必须为字符串
解决PostgreSQL连接时的SASL密码错误问题
连接PostgreSQL时抛出错误:
throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE : client password must be a string') ^ Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string
问题原因
错误核心是密码被识别为非字符串类型。PostgreSQL的JavaScript客户端要求密码必须是字符串,若密码值是数字类型(比如未加引号的5432),就会触发这个错误。
解决方案
- 确保db.js中password为字符串类型
检查你的db.js配置,确认password值用单引号或双引号包裹,避免数字类型:const configs = { host: 'localhost', port: 5432, user: 'postgres', password: '5432', // 必须是字符串,不能写5432(无引号) database: 'postgres' } - 排查配置读取的类型转换
如果密码是从环境变量或其他配置文件读取的,可能被自动转为数字类型,需手动转为字符串:password: String(process.env.DB_PASSWORD) - 忽略settings.json的干扰
你实际代码使用的是db.js中的配置,settings.json是SQLTools的配置,不影响代码层面的数据库连接,无需针对它修改。
内容的提问来源于stack exchange,提问作者andr_hot
相关产品推荐
相关产品推荐

