Jest.js i18 next服务未初始化-添加自定义格式化程序函数时,运行时“无法读取未定义的属性(阅读”add“)”

hc8w905p  于 2023-01-18  发布在  Jest
关注(0)|答案(1)|浏览(97)

当我使用i18 next(版本22.4.5)执行以下代码(在services.formatter.add)时,突然开始在运行时收到错误:
"Uncaught TypeError: Cannot read properties of undefined (reading 'add')"
调试时,i18nextInstance上的services对象在初始化后为空({})(见屏幕截图),这将导致TypeError,但我无法找出为什么此对象现在为空。

const i18nextInstance = i18next.createInstance({
    debug: true,
    lng: currentLanguage,
    fallbackLng: 'en-GB', // Fallback to English strings and don't show an error
    fallbackNS: defaultNamespace, // Fallback for strings translated with `t`
    defaultNS: defaultNamespace,
    resources: resources
});

i18nextInstance.t('common:Hello World');

/**
 * Formatter function for locale-specific relative time strings 
 */
i18nextInstance.services.formatter.add('fromnow', (value: Date, lng, options): string => {
    return timeAgo(value, lng);
});

上周我正在使用这个版本的软件包,它的功能和预期的一样--是什么突然导致了这个问题?我的同事运行了相同的代码(我们都在Windows上),他遇到了完全相同的问题。我只是在尝试让组件代码Jest测试工作时遇到了这个问题,但现在它出现在Chrome中。
对于上下文,我在StencilJS项目中使用这个库,在它自己的模块中,该模块在应用程序开始时由一些组件导入。
我尝试安装该库的更新版本(22. 4. 9),但没有成功。
我尝试过重置node_modules文件夹并重新安装库,以及删除所有与模板构建相关的文件夹(WWW、dist、loader)。
我在Chrome上硬加载了违规页面。

2izufjch

2izufjch1#

我发现createInstance不会初始化示例,所以我需要在createInstance之后添加init

i18nextInstance.init();

这真的很奇怪,因为我以前不需要使用这个函数,但我猜可能有一些缓存?

相关问题