您正在运行 vue-i18n 的 esm-bundler 构建。建议配置您的捆绑器以显式替换功能标志全局变量

jon*_*nas 8 ionic-framework vue.js vue-i18n

我创建了一个离子应用程序并添加了 vue-i18n。

npx ionic start myapp tabs --type vue
npm install vue-i18n@next
Run Code Online (Sandbox Code Playgroud)

我做了 VueI18n 设置的第一步,并将其添加到“./src/main.ts”:

import { createI18n } from 'vue-i18n';

const i18n = createI18n({
  locale: 'de',
  fallbackLocale: 'en',
  messages: {en: {testMessage: 'Test message'}, de: {testMessage: 'Testnachricht'}}
});
Run Code Online (Sandbox Code Playgroud)

npx ionic serve浏览器控制台中收到以下警告后查看结果时:

您正在运行 vue-i18n 的 esm-bundler 构建。建议将您的捆绑器配置为使用布尔文字显式替换功能标志全局变量,以便在最终捆绑包中进行适当的摇树。

我在浏览器控制台中得到了这个信息:

您正在运行 vue-i18n 的开发版本。确保在部署生产时使用生产版本 (*.prod.js)。

当我注释掉添加到“./src/main.ts”的代码段时,两个通知都消失了。所以它们似乎真的是由 vue-i18n 引起的。

问过谷歌后,我仍然不知道如何处理这些通知。他们在告诉我什么?我应该为他们做些什么吗?我可以具体做什么?

这些是在新项目的根文件夹中自动创建的文件:

./ionic.config.json
./cypress.json
./jest.config.js
./babel.config.js
./.gitignore
./package-lock.json
./package.json
./.eslintrc.js
./tsconfig.json
./capacitor.config.json
./.browserslistrc
Run Code Online (Sandbox Code Playgroud)

还请告诉我哪里需要更改。还

$ find . -type f ! -name package-lock.json -maxdepth 1 -exec grep -iH webpack {} \;
./tsconfig.json:      "webpack-env",
Run Code Online (Sandbox Code Playgroud)

因此,如果您告诉我“正确设置 webpack”,我将不知道该怎么办。

And*_*uca 44

vue-i18n为每个捆绑程序提供了如何设置全局功能标志的说明,以便此警告消失

https://vue-i18n.intlify.dev/guide/advanced/optimization.html#reduce-bundle-size-with-feature-build-flags

我正在使用 Vite,我将其添加到vite.config.ts

import { defineConfig } from 'vite';

export default defineConfig({
    define: {
        __VUE_I18N_FULL_INSTALL__: true,
        __VUE_I18N_LEGACY_API__: false,
        __INTLIFY_PROD_DEVTOOLS__: false,
    },
    // ...
});
Run Code Online (Sandbox Code Playgroud)

  • 我添加了这个,但消息并没有消失 (3认同)
  • 我必须使用 `__VUE_I18N_LEGACY_API__: true` 才能使 `this.$i18n` 正常工作。 (2认同)

小智 7

此警告仅出现在开发环境中。生产模式还行。

有一个解决方案:https : //github.com/xiaoxian521/CURD-TS/commit/f2db3acee2629ec26bc531a5b0b4be9eaec14dab


小智 7

现在我使用这种方式导入 i18n,警告消失了

import { createI18n } from 'vue-i18n/index'
Run Code Online (Sandbox Code Playgroud)

  • 这个答案对我没有帮助。我收到一条错误消息。使用 Vue 3 (13认同)
  • 它适用于类星体。只需修复 `boot/i18n.js` 中的导入 (3认同)
  • @KrushnDayshmookh 在我的 Quasar 项目中,将 `import { createI18n } from 'vue-i18n';` 更改为 `import { createI18n } from 'vue-i18n/index'` 会触发错误,除非我将 `i18n.ts` 启动文件重命名为`i18n.js`。 (3认同)

Sef*_*aUn 7

npm 我 vue-i18n

import { createI18n } from 'vue-i18n/dist/vue-i18n.cjs'

这在 Vue3 中对我有用。

我的@vue/cli 5.0.3版本。

我的vue-i18n版本是9.2.2.


Nif*_*fel 6

这显然是一个已知的错误。他们说它将在 9.2 版本中修复。

在此线程中查看更多信息:https://github.com/intlify/vue-i18n-next/issues/391

  • 我确认:`npm install vue-i18n@next`修复了这个错误 (6认同)

小智 5

vite.config.ts

alias: {
    'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
},
Run Code Online (Sandbox Code Playgroud)