如何用JavaScript正确连接PostgreSQL并解决两类连接相关错误
问题排查与修复方案
问题1:npm test 报错 "Error: no test specified"
原因
npm test 依赖项目根目录package.json里的scripts.test配置项,当前你的项目未配置该脚本,也未指定测试文件路径,导致npm无法识别要执行的测试逻辑。
修复方案
- 打开项目根目录的
package.json文件 - 在
scripts字段中添加test脚本,示例如下:{ "scripts": { "test": "node your-test-file.js" // 替换为你的测试文件路径,比如测试文件是test.js就写node test.js // 若使用Jest等测试框架,可写成"test": "jest" } } - 保存后重新执行
npm test即可。如果暂时不需要测试,直接用node index.js运行数据库连接代码即可。
问题2:执行node index.js 报错 error: relation "countries" does not exist
原因
PostgreSQL对标识符(表名、列名等)的大小写规则:
- 创建表时未用双引号包裹表名,PostgreSQL会自动将表名转为小写存储
- 你的代码中写的是
select * from Countries,PostgreSQL会自动把Countries转为小写countries查找,但如果表实际是用双引号创建的"Countries"(保留大写),就会匹配失败;也可先确认是否连接到了正确的simoo数据库。
修复方案
两种可选方式:
修改查询语句,用双引号包裹表名:
将代码中的查询语句改为:.then(() => client.query('select * from "Countries"'))这样PostgreSQL会精确匹配大写表名。
统一表名为小写:
若表是误创建为大写,可在PostgreSQL客户端执行重命名命令:ALTER TABLE "Countries" RENAME TO countries;之后代码中保持
select * from countries即可正常执行。
额外验证步骤:登录PostgreSQL客户端连接simoo数据库,执行\dt命令查看所有表,确认表名的实际大小写。
内容的提问来源于stack exchange,提问作者Simo
相关产品推荐
相关产品推荐

