You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Cypress/Javascript中TypeError: Cannot read property 'fraction' of undefined报错

修复步骤

  • 该TypeError通常由调用fraction()时传入非法参数触发,最常见的情况是你从页面抓取的赔率值未做清洗,传入了空字符串、undefined、包含多余空格/特殊符号的内容,mathjs无法将其解析为合法分数格式
  • 第一步:调用fraction()前先做参数合法性校验,清洗抓取到的原始值
// 示例:抓取赔率后先做清洗过滤
const rawOdds = Cypress.$('.your-odds-selector').text().trim()
// 校验值合法性,排除空值、非数字/分数格式内容
if (!rawOdds || !/^(\d+(\/\d+)?|\d+\.\d+)$/.test(rawOdds)) {
  throw new Error(`非法赔率值: ${rawOdds}`)
}
  • 第二步:确认mathjs导入方式符合Cypress环境要求,不要使用全局挂载的umd包,推荐用npm安装后模块化导入
// cypress测试文件顶部导入写法
import { fraction, equal } from 'mathjs'
  • 第三步:赔率比对不要直接用全等运算符,用mathjs内置的equal()方法做值比对,避免不同格式(小数/分数)相同值被判为不等的问题
// 存储抓取到的赔率为fraction类型
const savedOdds = fraction(rawOdds)
// 拿到下拉框选中的目标值后转fraction再比对
const targetOdds = fraction(cy.get('.odds-format-select').invoke('val'))
expect(equal(savedOdds, targetOdds)).to.be.true
  • 特殊场景适配:如果你需要解析美式赔率(格式为±开头的整数,比如+150、-200),mathjs原生不支持直接解析,需要先自行转换为小数格式再传入fraction()方法

内容的提问来源于stack exchange,提问作者BruceyBandit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:54:00