You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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模块已经内置了国际化资源处理逻辑,无需手动添加该插件。

  1. 删除nuxt.config.ts中vite.plugins数组内的VueI18nVitePlugin配置项
  2. 同时移除对应的导入语句(比如resolve、dirname、fileURLToPath以及VueI18nVitePlugin的导入代码)
  3. 重新执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:00:14