使用 nm 运行 serve 时如何配置 vue.config.js 以消除 vue-i18n 控制台错误

How to configure vue.config.js to remove vue-i18n console error when using nm run serve

我是 Vue 的新手,我正在尝试设置 vue-i18n 并继续收到控制台警告

You are running the esm-bundler build of vue-i18n. It is recommended to configure your bundler to explicitly replace feature flag globals with boolean literals to get proper tree-shaking in the final bundle.

我的过程

$npm install vue-i18n@next
$npm i --save-dev @intlify/vue-i18n-loader@next

我尝试根据各种堆栈溢出答案向我的 vue.config.js 文件添加不同的东西,包括

module.exports = {
    chainWebpack: config =>
    {
        config.module
            .rule( 'i18n' )
            .resourceQuery( /blockType=i18n/ )
            .type( 'javascript/auto' )
            .use( 'i18n' )
            .loader( '@intlify/vue-i18n-loader' )
    }
}

const webpack = require('webpack');

module.exports = {
    configureWebpack:
    {
        plugins: [
            // Define Bundler Build Feature Flags
            new webpack.DefinePlugin( {
                __VUE_OPTIONS_API__: false,
                __VUE_I18N_FULL_INSTALL__: true,
                __VUE_I18N_LEGACY_API__: true,
                __VUE_I18N_PROD_DEVTOOLS__: false,
                __INTLIFY_PROD_DEVTOOLS__: false
            } ),
        ],
    }
};

当我使用第一个示例时 vue.config.js 全局值都使用正确的值记录到控制台,但我仍然收到警告。

似乎唯一可以消除错误的方法是修改 i18n 导入。

import { createI18n } from 'vue-i18n/index'

但是,这似乎是错误的,因为它只是绕过了生成警告的文件。

我的问题也归结为...

如何配置 vue-i18n 以使用我使用

的 vue3 项目
npm run serve

以消除控制台警告的方式?或者在我的 vue3 项目中 configure/use/add vue-i18n 的确切步骤是什么。

package.json

{
  "name": "octo-train-client",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@mdi/font": "^6.4.95",
    "axios": "^0.24.0",
    "core-js": "^3.6.5",
    "dotenv-webpack": "^7.0.3",
    "form-data": "^4.0.0",
    "primeflex": "^2.0.0",
    "primeicons": "^4.1.0",
    "primevue": "^3.8.2",
    "vue": "^3.0.0",
    "vue-axios": "^3.4.0",
    "vue-i18n": "^9.0.0-rc.4",
    "vue-router": "^4.0.0-0",
    "vuex": "^4.0.0-0"
  },
  "devDependencies": {
    "@intlify/vue-i18n-loader": "^4.1.0",
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-plugin-router": "~4.5.0",
    "@vue/cli-plugin-vuex": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "@vue/compiler-sfc": "^3.0.0",
    "@vue/eslint-config-prettier": "^6.0.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-prettier": "^3.3.1",
    "eslint-plugin-vue": "^7.0.0",
    "node-sass": "^4.12.0",
    "prettier": "^2.2.1",
    "sass-loader": "^8.0.2"
  }
}

The meaning of this warning message is that you need to specify the flag explicitly in the bundler when you do a production build.

vue-i18n为bundlers提供的包请参考以下link

https://vue-i18n.intlify.dev/installation.html#with-a-bundler

一个可以帮助您解决问题的建议是,为上面 link 的注意部分中列出的每个捆绑器使用插件,他们会为您正确配置它们。我建议您检查一下。

查看 GitHub 论坛中列出的这个 issue

我遇到了同样的问题,如果你在开发模式下似乎是正常的。

https://github.com/intlify/vue-i18n-next/issues/810

您不应该在生产级别上看到它