我们的应用程序是
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
中