Playwright测试调用pg连接PostgreSQL遇异常:测试消失+模块缺失
Playwright测试数据库连接问题分析与解决方案
异常1:命令行提示「Error: Cannot find module 'pg'」
原因
package.json的dependencies中仅存在@types/pg(PostgreSQL的TypeScript类型定义包),缺少实际的pg核心包。- 执行
npm install pg --save后未成功将包写入dependencies,大概率是npm缓存异常或命令执行环境的问题。
解决方案
- 重新安装
pg包并确保写入生产依赖:npm install pg --save - 若安装后
pg仍未出现在dependencies中,清理npm缓存后重试:npm cache clean --force npm install pg --save - 验证
package.json的dependencies中出现类似配置(版本号以实际安装为准):"dependencies": { "@types/pg": "^8.11.6", "pg": "^8.12.0" }
异常2:Playwright测试UI中shopping-cart.spec.ts消失,显示db-connection.ts
原因
当pg包缺失导致db-connection.ts抛出模块未找到错误时,Playwright的错误追踪会直接定位到错误发生的文件(即db-connection.ts),从而覆盖了原本的测试文件入口显示。
解决方案
该异常是异常1的衍生问题,解决pg包缺失问题后,测试UI会自动恢复显示shopping-cart.spec.ts。额外建议:
- 完善数据库操作函数的错误捕获逻辑,避免未处理的异常干扰测试流程的展示。
额外潜在问题修复
db-connection.ts中导入的envConfig在当前playwright.config.ts中未定义导出,会导致后续运行时出现「找不到envConfig」的错误:
- 在
playwright.config.ts中添加envConfig导出:export const envConfig = { DB_USERNAME: process.env.DB_USERNAME, DB_HOST: process.env.DB_HOST, DB_PORT: process.env.DB_PORT, DB_NAME: process.env.DB_NAME, }; - 确保对应环境的
.env文件(如.env.local、.env.prod)中正确配置了数据库相关的环境变量。
内容的提问来源于stack exchange,提问作者Sim
相关产品推荐
相关产品推荐

