Angular 15 + Jest 28.1.3测试报错:Cannot find name 'global'
成因分析:Jest + Angular 15 中
global 未找到的 TS2304 错误 TypeScript 类型定义未正确引入
Jest 运行在 Node.js 环境中,global是 Node.js 的全局对象,但 Angular 15 项目的测试配置(tsconfig.spec.json)默认可能没有包含 Node.js 的类型定义。TypeScript 无法识别global的类型,因此抛出找不到名称的错误。Angular 测试环境的 TS 配置目标问题
Angular 项目默认的 TypeScript 目标是浏览器环境,tsconfig.spec.json里的types数组可能只包含jest、jasmine这类测试框架类型,没有添加node类型。缺少 Node.js 类型定义的情况下,TypeScript 不知道global这个全局变量。Jest 28 的版本特性变化
Jest 28 开始对全局对象的处理有调整,不再像旧版本那样自动在测试环境中注入global的类型声明。如果你的测试代码直接使用global,而没有手动配置类型支持,就会触发这个错误。混淆了不同环境的全局对象
浏览器环境的全局对象是window,而 Jest 基于 Node.js 运行,全局对象是global。Angular 项目平时开发聚焦浏览器环境,TypeScript 默认不会主动识别 Node.js 特有的global对象,导致类型检查失败。
内容的提问来源于stack exchange,提问作者millerbill3
相关产品推荐
相关产品推荐

