使用VueI18n出现TypeError: Cannot read 'use' of undefined错误的解决方法
解决VueI18n报错:TypeError: Cannot read properties of undefined (reading 'use')
这个报错核心原因有两个:要么是app变量未定义,要么是VueI18n版本与Vue版本不匹配导致用法错误,下面分情况给出解决办法:
情况1:app实例未创建或未正确引入
你代码里直接调用app.use(VueI18n),但app是Vue3中通过createApp创建的实例,必须先创建才能使用;如果是Vue2环境,根本不需要app,直接用Vue.use()即可。
Vue3 修正代码:
import { createApp } from 'vue' import App from './App.vue' // Vue3需使用vue-i18n@9+,导入方式改为createI18n import { createI18n } from 'vue-i18n' import { languages } from './i18n/index.js' // 先创建app实例 const app = createApp(App) const locale = 'it' const messages = Object.assign(languages) // 创建i18n实例 const i18n = createI18n({ locale: locale, fallbackLocale: 'it', messages }) // 挂载i18n到app app.use(i18n) app.mount('#app') export { i18n }
Vue2 修正代码:
import Vue from 'vue' import VueI18n from 'vue-i18n' // Vue2需使用vue-i18n@8.x import { languages } from './i18n/index.js' // Vue2直接用Vue.use注册插件 Vue.use(VueI18n) const locale = 'it' const messages = Object.assign(languages) const i18n = new VueI18n({ locale: locale, fallbackLocale: 'it', messages }) export { i18n } // 后续在main.js中把i18n传入new Vue({ i18n })即可
情况2:VueI18n版本不匹配
- 若使用Vue3,必须安装
vue-i18n@9.x及以上版本,执行命令:npm install vue-i18n@next - 若使用Vue2,只能用
vue-i18n@8.x版本,执行命令:npm install vue-i18n@8
另外你原代码存在语法错误:new VueI18n({})配置里多写了一行i18n,需要删除。
内容的提问来源于stack exchange,提问作者Naldi
相关产品推荐
相关产品推荐

