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

使用MSW模拟API测试时遇ReferenceError: TextEncoder未定义

解决MSW启动时ReferenceError: TextEncoder is not defined的方案

针对你遇到的问题,试试以下几个针对性的解决办法:

  • 强制指定Jest的jsdom兼容配置:部分新版jsdom默认未暴露TextEncoder/TextDecoder,在jest.config.js中添加如下配置:

    module.exports = {
      testEnvironment: 'jsdom',
      testEnvironmentOptions: {
        customExportConditions: ['node', 'node-addons']
      }
    }
    
  • 确保polyfill绑定到全局对象:调整setupTests.js中的polyfill代码,直接挂载到全局作用域,避免未生效:
    如果是ES模块环境:

    import { TextEncoder, TextDecoder } from 'util';
    globalThis.TextEncoder = TextEncoder;
    globalThis.TextDecoder = TextDecoder;
    

    如果是CommonJS环境:

    const { TextEncoder, TextDecoder } = require('util');
    global.TextEncoder = TextEncoder;
    global.TextDecoder = TextDecoder;
    
  • 调整MSW初始化顺序:保证polyfill代码在MSW启动代码之前执行,setupTests.js的执行顺序如下:

    // 先加载polyfill
    const { TextEncoder, TextDecoder } = require('util');
    global.TextEncoder = TextEncoder;
    global.TextDecoder = TextDecoder;
    
    // 再启动MSW服务器
    import { setupServer } from 'msw/node';
    const server = setupServer(/* 你的mock配置 */);
    server.listen();
    
  • 降级MSW版本:若最新版MSW与当前Jest/jsdom版本存在兼容性问题,可尝试降级到MSW v1.x稳定版:

    npm install msw@1.3.2
    

内容的提问来源于stack exchange,提问作者Ali Asghar Gill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:32:35