React渲染I18nextProvider时Jest测试报类型无效错误如何解决
遗漏排查点及解决方案
可排查方向
- 检查Jest全局或测试文件内的
react-i18nextmock配置:如果对该库做了自定义mock,需要确保mock内容正确导出了I18nextProvider组件,避免导入结果为undefined导致渲染报错 - 检查Jest的
transformIgnorePatterns配置:默认Jest不会转换node_modules下的模块,而react-i18next采用ES模块规范导出,若没有将其排除在transform忽略列表外,会导致命名导出解析失败,无法正确拿到I18nextProvider - 检查测试环境下
myTranslator.getInstance()的返回值:确认测试环境下该实例能正常初始化,返回符合要求的i18n实例,避免prop传入非法值引发异常 - 检查测试文件是否存在局部
jest.mock语句覆盖了默认导入:局部mock语句如果没有正确导出所需属性,也会导致该问题
修复方案
修改Jest配置,将react-i18next、i18next相关包加入转换白名单,参考配置如下:
// jest.config.js 配置示例 module.exports = { // 其余原有配置保持不变 transformIgnorePatterns: [ "/node_modules/(?!(react-i18next|i18next)/)" ] }
配置完成后重启Jest即可解决报错。
内容的提问来源于stack exchange,提问作者Niru
相关产品推荐
相关产品推荐

