使用moment.js校验元素时间失败:moment未定义问题求助
解决Cypress测试中moment未定义的问题
问题原因
你的导入方式错误,空导入import {} from "./moment.js";没有将moment变量引入当前作用域,导致代码中无法识别moment()方法。
解决方案
1. 修正本地moment.js的导入语句
将导入代码改为:
import moment from "./moment.js";
2. 推荐:通过npm安装moment(更稳定)
如果项目支持npm,先安装moment依赖:
npm install moment --save-dev
然后在测试文件中导入:
import moment from 'moment';
3. 测试代码优化(可选)
可以把时间计算逻辑移到cy.window()外部,避免不必要的上下文切换:
import moment from 'moment'; // 或对应本地文件路径 const newTime = moment().add(2, 'hours').format('HH:mm'); cy.get('[for="timefrom"]').should('be.visible').and('have.text', 'Time from: ') cy.get('#timefrom').should('be.visible').and('have.value', newTime)
额外注意
如果页面展示的时间基于特定时区,需和页面使用相同时区计算,比如:
// 需先安装moment-timezone:npm install moment-timezone --save-dev import moment from 'moment-timezone'; const newTime = moment().tz('Asia/Shanghai').add(2, 'hours').format('HH:mm');
内容的提问来源于stack exchange,提问作者Michelle Murray
相关产品推荐
相关产品推荐

