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

升级react-router至7.1.1后Jest测试出现TextEncoder未定义错误

React Router 7.x 升级后 Jest 测试 TextEncoder is not defined 问题解决

问题原因

React Router 7.x 内部新增了对 TextEncoder API 的依赖,但 Jest 默认使用的 jsdom 环境(尤其是旧版本)没有在全局对象中提供这个 API。而 React Router 6.x 版本要么未使用该 API,要么内部做了兼容处理,所以升级后才触发这个报错。另外,React Router 7.x 合并了原 react-router-dom 的部分功能,但测试环境的全局对象补全逻辑没同步更新。

修复方案

1. 全局补全 TextEncoder/TextDecoder

在项目的测试初始化文件中添加全局对象补全:

  • 如果是 Create React App 项目,直接在 src/setupTests.js 中加入:
import { TextEncoder, TextDecoder } from 'util';

global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;
  • 如果自定义了 Jest 配置(jest.config.js),可以在 setupFilesAfterEnv 指向的文件中添加上述代码。

2. 升级 jsdom 版本

低版本 jsdom 不支持 TextEncoder 全局 API,升级到 20.x 及以上版本即可解决:

npm install jsdom@latest --save-dev

3. 回退到稳定版本(应急方案)

如果上述方法暂时无法落地,回退到之前能正常运行的版本组合:

npm uninstall react-router
npm install react-router@6.26.2 react-router-dom@6.27.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:38:11