升级Cypress至v8.3.1后出现Cypress.moment未定义报错如何解决
问题修复方案
根因说明
你遇到的报错是因为@cypress/code-coverage旧版本依赖Cypress内置的Cypress.momentAPI实现超时时间计算,而Cypress v8.0+版本已经正式移除了该内置API,导致插件调用时触发属性读取失败。
解决方案
方案1(优先推荐):升级代码覆盖率插件到兼容版本
官方已经在@cypress/code-coverage v3.9.12及以上版本修复了该问题,移除了对Cypress.moment的依赖,直接执行对应包管理器的升级命令即可:
# npm 环境 npm update @cypress/code-coverage --save-dev # yarn 环境 yarn upgrade @cypress/code-coverage --dev
升级完成后重启Cypress即可正常运行测试,无其他额外配置。
方案2(临时兼容方案):手动补全全局moment引用
如果受项目限制暂时无法升级插件,可以自行挂载moment到Cypress全局对象兼容旧版插件逻辑:
- 首先安装moment依赖:
npm install moment --save-dev
- 在Cypress测试的
cypress/support/index.js(v10+版本为cypress/support/e2e.js)文件最顶部添加如下代码:
Cypress.moment = require('moment')
该方案可以临时解决报错问题,后续建议尽快升级插件避免冗余依赖。
内容的提问来源于stack exchange,提问作者denislexic
相关产品推荐
相关产品推荐

