从webpack迁移到rspack后,Playwright与Jest测试报错求助
解决Webpack迁移Rspack后Jest+Playwright测试报错问题
排查方向与解决方案
1. 对齐同事的Playwright依赖版本
同事环境测试正常,说明特定版本的Playwright能稳定工作,直接锁定对应版本:
- 让同事执行
npm list @playwright/test playwright,获取这两个包的具体版本号 - 在你的项目中手动安装指定版本:
npm install @playwright/test@x.x.x playwright@y.y.y - 重新安装Playwright浏览器:
npx playwright install
2. 修复依赖树冲突
报错ys.deprecate is not a function和Jest内部错误,大概率是依赖包版本不一致导致的:
- 用以下命令排查冲突包:
npm ls deprecate npm ls @types/node - 在
package.json中添加resolutions字段锁定冲突包的版本(npm),如果用pnpm则用pnpm.overrides:"resolutions": { "deprecate": "1.1.0", // 替换为排查到的正常版本 "@types/node": "18.17.0" } - 重新安装依赖:
npm install --legacy-peer-deps
3. 调整Jest配置适配Rspack环境
迁移到Rspack后,原有的Jest配置可能还依赖Webpack相关工具,需更新:
- 检查
jest.config.js中的transform字段,确保使用的转换器(如ts-jest)与Jest@29版本匹配(ts-jest@29.x对应Jest@29) - 移除所有Webpack相关的Jest插件(如
jest-webpack),改用Rspack兼容的工具或直接使用babel-jest/ts-jest
4. 清理缓存后重新安装
之前的clean install可能导致依赖树混乱,按以下步骤操作:
# 删除依赖目录和锁文件 rm -rf node_modules rm package-lock.json # 清除npm缓存 npm cache clean --force # 先安装Playwright,再安装其他依赖 npm install @playwright/test@x.x.x && npm install --legacy-peer-deps
5. 排查ESLint@9的影响
ESLint@9版本变动较大,可能与测试工具冲突:
- 检查
eslint-plugin-jest版本,需v27+才能适配ESLint@9,升级命令:npm install eslint-plugin-jest@latest - 暂时修改
package.json中的测试脚本,去掉ESLint前置检查,验证是否是ESLint导致的问题:"scripts": { "test": "jest" }
内容的提问来源于stack exchange,提问作者Robert Jamborski
相关产品推荐
相关产品推荐

