如何解决Node版本>10环境下Protractor报错primordial is not defined的问题
根因说明
你遇到的primordials相关报错是低版本Protractor的依赖兼容性问题:低版本Protractor依赖的graceful-fs@3.x会调用Node内部的primordials全局对象,而Node 11及以上版本已经移除了该对象,因此只有Node 10及以下版本能正常运行,更高版本Node都会触发该报错,和你截图中的错误表现完全一致。
修复方案
方案1:升级Protractor到兼容版本(优先推荐)
- Protractor从
v7.0.0开始已经更新了所有依赖适配Node 12+版本,直接升级即可完全解决该问题,绝大多数原有测试用例无需调整 - 执行升级命令:
npm install protractor@latest --save-dev - 升级完成后执行
webdriver-manager update同步更新对应驱动即可正常使用
方案2:强制覆盖依赖版本(适合无法升级Protractor的场景)
如果因为业务兼容性问题无法升级Protractor大版本,可以通过包管理器的依赖覆盖配置,强制项目所有依赖调用兼容高版本Node的graceful-fs:
- 若使用npm v8及以上版本,在项目的
package.json中添加如下配置:
{ "overrides": { "graceful-fs": "^4.2.10" } }
- 若使用yarn作为包管理器,在项目的
package.json中添加如下配置:
{ "resolutions": { "graceful-fs": "^4.2.10" } }
- 配置添加完成后,删除项目下的
node_modules文件夹、package-lock.json或yarn.lock文件,重新执行安装命令即可生效
验证方式
安装完成后执行protractor --version确认配置生效,运行单条测试用例即可验证报错是否解决。
内容的提问来源于stack exchange,提问作者kevthedevv
相关产品推荐
相关产品推荐

