Nuxt3生产构建报i18n[TranslateVNodeSymbol]非函数错误,开发环境正常
解决生产构建后
i18n[TranslateVNodeSymbol] is not a function错误 问题背景
项目使用@nuxtjs/i18n ^8.0.0-rc.5,开发环境执行npm run dev一切正常,但执行npm run build或npm run preview后,构建过程无报错,页面却抛出i18n[TranslateVNodeSymbol] is not a function错误。
相关配置
package.json依赖
"@nuxtjs/i18n": "^8.0.0-rc.5"
nuxt.config.ts配置
modules: ["@nuxtjs/i18n"], build: { transpile: ["vue-i18n"], }, i18n: { vueI18n: "./i18n.config.ts", }, vite: { plugins: [ VueI18nVitePlugin({ include: [ resolve(dirname(fileURLToPath(import.meta.url)), "./locales/*.json"), ], }), ], css: { preprocessorOptions: { scss: { additionalData: "@use \"@/assets/styles/_variables.scss\" as *;", }, }, }, },
i18n.config.ts配置
import ru from "~/locales/ru.json" import en from "~/locales/en.json" export default defineI18nConfig(() => ({ legacy: false, globalInjection: true, locale: "ru", messages: { ru, en, }, }))
错误表现
- 生产构建后前端页面弹出
i18n[TranslateVNodeSymbol] is not a function错误提示 - 终端构建日志无报错信息
解决方案
这个错误大多是@nuxtjs/i18n v8版本与手动配置的VueI18nVitePlugin冲突导致的——v8版本的nuxt i18n模块已经内置了国际化资源处理逻辑,无需手动添加该插件。
- 删除
nuxt.config.ts中vite.plugins数组内的VueI18nVitePlugin配置项 - 同时移除对应的导入语句(比如
resolve、dirname、fileURLToPath以及VueI18nVitePlugin的导入代码) - 重新执行
npm run build和npm run preview验证修复效果
额外优化建议:
- 升级
@nuxtjs/i18n到最新稳定版(v8正式版已发布),RC版本可能存在未修复的构建问题 - 移除
build.transpile中的vue-i18n,v8版本的nuxt i18n模块已自动处理transpile配置 - 检查组件代码,确保没有混合使用legacy模式API和Composition API(配置中已开启
legacy: false)
内容的提问来源于stack exchange,提问作者shmrnm
相关产品推荐
相关产品推荐

