vue-i18n国际化概率性报错:Cannot read property '_t' of null怎么解决?

发布于 2022-09-11 15:31:49 字数 300 浏览 20 评论 0

在vue项目中使用国际化插件在切换页面时会概率性报错:Uncaught TypeError: Cannot read property '_t' of null at VueComponent.Vue.$t,有序的重复报错(比如每次都是重复4条)一直停不下来。如果我重新刷新页面报错就会停止。

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小情绪 2022-09-18 15:31:49

vue项目,路由快速跳转时,vue-18n有一定概率报错Cannot read property '_t' of null。

原因(我自己的理解):
页面A和页面B都有配置多语言,如html里的
$t('xxx'),data或method里的this.$t('xxx')
在页面A跳转B时,页面A的多语言还没加载完成但已经跳转到B页面了,就找不到A页面里的this指向了。

解决办法:
多语言配置文件(我的项目是src下的i18n/index.js)

import Vue from 'vue'
import VueI18n from 'vue-i18n'

import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
import enLocale from 'element-ui/lib/locale/lang/en'
import jaLocale from 'element-ui/lib/locale/lang/ja'

Vue.use(VueI18n) // 通过插件的形式挂载

let messages = {
  'zh-CN': { ...require('./zh'), ...zhLocale },
  'en-US': { ...require('./en'), ...enLocale },
  'ja-JP': { ...require('./ja'), ...jaLocale },
}

const i18n = new VueI18n({
  locale: 'zh-CN', // 语言标识
  messages
})

export default i18n

配置多语言的单页面里单独引入i18n
页面里 this.$t('xxx') 改成 i18n.t('xxx')

import i18n from '@/i18n/index'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文