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

本地运行Jest单元测试报错:TypeError: Cannot redefine property: window

Jest单元测试报错:TypeError: Cannot redefine property: window

问题描述

执行yarn test:unit:watch运行Jest单元测试时,触发如下错误:

Test suite failed to run

TypeError: Cannot redefine property: window

at Object.<anonymous> (node_modules/jest-canvas-mock/lib/index.js:11:17)

已尝试删除node_modules重新安装、重新克隆仓库,问题仍存在,其他同事未遇到该情况。

解决建议

  • 锁定jest-canvas-mock版本:不同版本的该库对window属性的处理逻辑有差异,在package.json中指定和同事一致的具体版本号,再执行yarn install重新安装。
  • 调整Jest mock加载顺序:若Jest配置中同时使用了其他涉及window对象的mock工具(如jsdom相关配置),可能存在加载冲突。修改setupFiles或setupFilesAfterEnv的顺序,将jest-canvas-mock放在较晚的位置加载,避免先初始化的库锁定window属性。
  • 对齐Node.js版本:Node.js版本差异会导致Object.defineProperty的行为不同,用nvm等版本管理工具切换到和同事相同的Node.js版本。
  • 改用手动导入mock:若jest-canvas-mock被设为全局自动mock,可移除配置中的全局设置,改为在需要的测试文件顶部手动添加import 'jest-canvas-mock',避免全局层面重复定义window属性。
  • 排查本地环境配置:检查是否存在自定义的本地Jest配置文件(如jest.config.local.js)或全局Node.js环境变量,这些可能和仓库默认配置冲突,导致window属性被提前锁定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:50:35