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

升级Axios至v1.3.1后所有测试报错:ReferenceError: TextEncoder is not defined

解决Axios v1.3.1升级后Jest测试报错TextEncoder is not defined的问题

方案1:切换Jest测试环境为jsdom

在项目的jest.config.js(或jest.config.ts)里,把测试环境改成jsdom:

module.exports = {
  testEnvironment: 'jsdom',
  // 其他原有配置...
};

如果是Create React App项目,不用改全局配置,直接在每个测试文件顶部加一行注释:

/**
 * @jest-environment jsdom
 */

方案2:在Jest初始化文件中注入TextEncoder/TextDecoder

要是不想切换测试环境,就修改你的Jest setup文件(比如src/setupTests.js),替换成这段代码:

import { TextEncoder, TextDecoder } from 'util';

global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;

同时确保这个setup文件在Jest配置里被正确加载:

// jest.config.js
module.exports = {
  setupFilesAfterEnv: ['./src/setupTests.js'],
  // 其他配置...
};

问题根源

Axios从v1.3.x版本开始,内部代码用到了浏览器环境的TextEncoder和TextDecoderAPI,但Jest默认的node测试环境并没有提供这两个API。jsdom环境会模拟浏览器的全局对象,自带这些API;如果坚持用node环境,就需要手动从Node.js的util模块引入并挂载到全局。

你之前试的方案无效,大概率是因为代码执行时机不对——这段注入代码必须在Axios被导入前执行,所以一定要放在Jest的setup文件里,不能写在测试文件或者业务代码里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:40:13