`i18next.t()` 无效插值抛出错误

问题描述 投票:0回答:0

我们的应用程序是

nodeJS
,使用包
typescript
写成
i18next

遇到

t
函数的问题,其中未正确定义插值,而不是返回无效的密钥字符串(就像大多数错误一样)它只是抛出一个错误。这是引发错误的特定场景:

// socket.json
{
  "key": "some message {{nestedTranslation}}",
  "key2": "nested message with number {{count}}",
}
        const a: TranslationObject = {
            key: 'socket:key',
            options: {
                nestedTranslation: `$t(socket:key2, {"count": 3})`,
            },
        }

        const translatedMessage = t(a.key, a.options)

我意识到问题在于转义值,我们可以在

.json
文件中明确包含插值或使用
interpolation: {escapeValue :false}
但这让我想到了我的问题。

为什么它抛出错误

TypeError: Cannot read property 'length' of null
而不是仅仅返回一些不正确的(但无害的)
string
?我可以在
errorHandler
启动过程中的某处添加一个
i18n
以免再次发生这种情况吗?由于这个错误理想地使我们服务器上的某些进程崩溃,我想避免将
t()
的所有实例包装在
try/catch

i18next
© www.soinside.com 2019 - 2024. All rights reserved.