NPM版本升级后WebdriverIO项目启动报错找不到csv-stringify/sync模块
问题根因定位
@wdio/allure-reporter v7.16.10依赖 v5.x版本的csv-stringify,该版本支持csv-stringify/sync直接导入路径- 项目中显式安装了
csv-stringify v6.0.4,该版本重构了导出规则,sync模块导入路径变更为csv-stringify/dist/cjs/sync,旧路径已废弃 - NPM 8.x的依赖扁平化机制会优先调用项目顶层安装的高版本
csv-stringify,导致allure-reporter加载旧路径时抛出模块缺失错误
如果之前移除allure配置后仍然报错,检查wdio.conf.js的reporters配置项,确认已完全删除allure相关的引用即可消除该报错。
可行解决方案
按优先级从高到低排列:
覆盖allure-reporter的子依赖版本(最推荐,不影响业务代码)
在package.json中添加overrides配置,强制@wdio/allure-reporter使用兼容的v5.x版本csv-stringify,不会影响业务代码对6.x版本的使用:{ "overrides": { "@wdio/allure-reporter": { "csv-stringify": "^5.6.5" } } }配置完成后执行以下命令重建依赖即可:
rm -rf node_modules package-lock.json && npm install降级项目全局csv相关依赖版本
如果业务代码没有用到csv-stringify 6.x的专属特性,可以直接降级项目内的csv全家桶到兼容版本:npm install csv-stringify@5.6.5 csv@5.5.3安装完成后重启项目即可正常运行。
升级WebdriverIO全量依赖到v8版本
v8版本的@wdio/allure-reporter已经适配了csv-stringify 6.x的新路径,可接受大版本升级的情况下,将所有@wdio/开头的依赖升级到^8.0.0版本即可解决问题。
内容的提问来源于stack exchange,提问作者Aman Sharma
相关产品推荐
相关产品推荐

