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

Jest检测Trans组件报错ReferenceError: renderNodes未定义如何解决?

问题原因

你本地__mocks__/react-i18next.js文件中对Trans组件的模拟实现存在错误:代码中直接调用了未定义的renderNodes方法,该方法是真实react-i18next库的内部方法,你在编写mock时没有声明定义,因此Jest运行测试加载模拟文件时会抛出引用错误。
浏览器运行时加载的是真实的react-i18next库而非mock文件,因此功能正常不受影响。

修复方案

根据你的测试需求选择以下任意一种方案即可:

  • 极简适配(适用于不需要对Trans渲染结果做复杂断言的场景)
    直接修改__mocks__/react-i18next.js中第13行的Trans模拟逻辑,替换为以下代码:
Trans: ({ children, i18nKey }) => <>{children || i18nKey}</>,

该实现会直接返回Trans组件包裹的子元素,若没有子元素则返回传入的i18nKey,可覆盖绝大多数基础测试场景。

  • 贴近真实行为的实现(适用于需要测试插值、嵌套标签解析逻辑的场景)
    修改__mocks__/react-i18next.js的Trans模拟逻辑,手动实现简单的节点解析能力:
import { renderToString } from 'react-dom/server';

// mock内Trans实现
Trans: ({ i18nKey, children }) => {
  // 可根据测试需要自定义解析规则,以下是简单实现示例
  const content = i18nKey ? i18nKey.replace(/<\d+\/?>/g, '') : renderToString(children);
  return <span dangerouslySetInnerHTML={{ __html: content }} />;
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:36:04