uniapp项目报错you are running the esm-bundler build of vue-i18n如何解决

我在uniapp项目中运行时报错:“you are running the esm-bundler build of vue-i18n”,请问该如何解决?这个错误会影响国际化功能吗?有没有具体的配置方法可以避免这个报错?

2 回复

在uniapp项目中使用vue-i18n时,如果遇到这个错误,可以尝试以下方法:

  1. 在vue.config.js中添加配置:
configureWebpack: {
  resolve: {
    alias: {
      'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js'
    }
  }
}
  1. 或者直接修改引入方式:
import { createI18n } from 'vue-i18n/dist/vue-i18n.cjs.js'

这样可以强制使用CommonJS版本,避免ESM模块的问题。


这个错误提示表示在 uni-app 项目中使用了 Vue I18n 的 ESM 打包版本,但未正确定义 __VUE_I18N_FULL_INSTALL__ 等环境变量。

解决方案:

  1. 在 vue.config.js 中配置:
const webpack = require('webpack')

module.exports = {
  configureWebpack: {
    plugins: [
      new webpack.DefinePlugin({
        __VUE_I18N_FULL_INSTALL__: true,
        __VUE_I18N_LEGACY_API__: false,
        __INTLIFY_PROD_DEVTOOLS__: false
      })
    ]
  }
}
  1. 如果使用 Vite(uni-app 3+): 在 vite.config.js 中:
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'

export default defineConfig({
  plugins: [uni()],
  define: {
    __VUE_I18N_FULL_INSTALL__: true,
    __VUE_I18N_LEGACY_API__: false,
    __INTLIFY_PROD_DEVTOOLS__: false
  }
})
  1. 检查 package.json: 确保 vue-i18n 版本兼容,建议使用较新版本:
{
  "dependencies": {
    "vue-i18n": "^9.0.0"
  }
}

原因说明: Vue I18n 的 ESM 构建版本需要明确指定功能标志,否则会提示此警告。通过定义这些环境变量,可以正确启用完整功能。

配置完成后重启开发服务器即可解决该问题。

回到顶部