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

Jest Puppeteer测试报错:ReferenceError: cov_77g31rban未定义

问题原因与解决方案

这个错误里的cov_77g31rban是代码覆盖率工具(比如Istanbul、nyc)注入的覆盖率统计变量,问题出在这个项目开启了代码覆盖率收集,导致你的Puppeteer回调函数被自动注入了覆盖率代码,但这些变量只能在Node.js环境里识别,浏览器环境找不到,所以报错。其他项目没开覆盖率,所以正常运行。

解决办法:

  • 检查项目是否启用了nyc、babel-plugin-istanbul这类覆盖率工具,确认是否在当前运行流程中自动注入了覆盖率代码。
  • 临时禁用覆盖率收集:如果是用nyc命令启动的,去掉命令前的nyc前缀;如果是配置文件(比如.nycrc、package.json里的nyc配置)里开启的,暂时注释相关配置项。
  • 修改代码规避注入:把回调函数改成字符串形式传入,或者换用page.evaluate直接写操作逻辑,覆盖率工具不会给静态字符串注入代码,比如:
    // 方案1:用page.evaluate直接操作
    await page.evaluate(() => {
      const elem = document.querySelector("input[id*='virtual_course']");
      if (elem) elem.click();
    });
    
    // 方案2:把回调函数写成字符串传入$eval
    await page.$eval("input[id*='virtual_course']", "elem => elem.click()");
    
  • 配置覆盖率工具排除相关代码:在nyc或Istanbul的配置里,添加排除规则,不对Puppeteer的回调函数注入覆盖率代码,比如在.nycrc里添加:
    "exclude": [
      "**/*.test.js", // 根据你的测试文件路径调整
      "**/puppeteer-scripts/**" // 把Puppeteer相关脚本加入排除
    ]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:30:50