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

React/TypeScript项目Jest测试提示需jsdom环境后续报global未定义

解决方案

步骤1:安装缺失依赖

Jest 27及以上版本不再内置jsdom测试环境,需要单独安装:

npm install --save-dev jest-environment-jsdom

步骤2:修改jest.config.js配置

在配置文件中补充测试环境相关配置,不需要在每个测试文件顶部加环境注释:

module.exports = {              
  roots: ["<rootDir>/src"],          
  // 新增下面两行配置
  testEnvironment: "jsdom",
  testEnvironmentOptions: {
    url: "http://localhost:3000"
  },
  transform: {
    "^.+\\.tsx?$": "ts-jest",
    "^.+\\.svg$": "<rootDir>/svgTransform.js",
    "^.+\\.css$": "<rootDir>/cssTransform.js"
  },       
  setupFilesAfterEnv: [        
    "@testing-library/jest-dom/extend-expect"
  ],    
  testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",    
  moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"]
};

步骤3:解决global未定义报错

如果修改完配置后仍提示ReferenceError: global is not defined,在src目录下新建jest.global.js文件,写入以下内容:

globalThis.global = globalThis;

然后在jest.config.js的setupFilesAfterEnv数组中新增这个文件的路径:

setupFilesAfterEnv: [        
  "@testing-library/jest-dom/extend-expect",
  "<rootDir>/src/jest.global.js"
],

可选简化方案

你当前项目使用了react-scripts,它已经内置了完整的Jest+React Testing Library配置,不需要自己维护jest.config.js。你可以直接删除项目里的jest.config.js,然后把package.json中的test脚本修改为:

"scripts": {
  "test": "react-scripts test",
  "test:watch": "react-scripts test --watch"
}

修改后直接运行测试即可,无需额外配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:04