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

运行Jest用例导入mongodb时报TextEncoder未定义错误如何解决

问题原因

mongodb 4.x版本依赖Node.js内置的TextEncoder全局API,你当前使用的Jest测试环境默认启用了jsdom模拟环境,旧版本jsdom环境未将Node.js原生的TextEncoder、TextDecoder暴露到测试运行上下文中,因此导入mongodb包时直接抛出未定义错误。
Node.js 14.18.0本身已经内置了TextEncoder接口,错误根源来自Jest运行环境的变量隔离机制。

修复方案

你可以根据业务场景选择以下任意一种方案:

  • 方案一:修改Jest测试环境为node(推荐,数据库连接类测试无需浏览器模拟环境)
    修改你的jest配置文件(jest.config.js或jest.config.ts),新增/修改testEnvironment配置项:

    module.exports = {
      // 其余原有配置保持不变
      testEnvironment: "node"
    }
    
  • 方案二:手动注入全局API(适用于必须保留jsdom环境的场景)
    首先在项目根目录新建测试前置执行文件setupTests.ts,写入以下内容:

    import { TextEncoder, TextDecoder } from 'util';
    // 将Node内置API挂载到测试全局对象上
    (global as any).TextEncoder = TextEncoder;
    (global as any).TextDecoder = TextDecoder;
    

    随后修改Jest配置,新增setupFilesAfterEnv配置项加载该前置文件:

    module.exports = {
      // 其余原有配置保持不变
      setupFilesAfterEnv: ['<rootDir>/setupTests.ts']
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:54:03