【问题标题】:Error - "Cannot find module ./en.json" using vue-i18n plugin错误 - 使用 vue-i18n 插件“找不到模块 ./en.json”
【发布时间】:2020-06-26 00:05:29
【问题描述】:

我有一个现有的 Vue 项目,我正在使用 i18n 插件为其添加本地化。一切都正确安装,根据我读过的一切(见here),我已经正确安装了一切。这包括/src/locales 下的每个语言环境一个文件,文件名是语言环境的名称 (/src/locales/en.json)。

/src/i18n.js文件的内容是:

import Vue from 'vue';
import VueI18n from 'vue-i18n';

Vue.use(VueI18n);

function loadLocaleMessages() {
  const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i);
  const messages = {};
  locales.keys().forEach((key) => {
    const matched = key.match(/([A-Za-z0-9-_]+)\./i);
    if (matched && matched.length > 1) {
      const locale = matched[1];
      messages[locale] = locales(key);
    }
  });
  return messages;
}

export default new VueI18n({
  locale: process.env.VUE_APP_I18N_LOCALE || 'en',
  fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
  messages: loadLocaleMessages(),
});

我遇到的错误是在loadLocaleMessages() 内部,它正在尝试加载/src/locales/.json 文件。我在调试器中逐步完成了它,并在

messages[locale] = locales(key);

它会抛出错误

Cannot find module './en.json'

其中key = ./en.jsonlocale = en

据我所知,我所做的一切都是正确的。我错过了什么导致此错误?

【问题讨论】:

    标签: javascript json vue.js webpack vue-i18n


    【解决方案1】:

    我也有同样的错误,但因为我创建了 Json 文件但从未放置任何内容。

    以防万一它也发生在你身上。

    【讨论】:

      【解决方案2】:

      好吧,尽管承认这一点很尴尬,但问题一直是我的en.json 文件中的尾随逗号。我有

      {
        "message": "hello i18n !!",
      }
      
      

      而不是

      {
        "message": "hello i18n !!"
      }
      
      

      可能是因为我太习惯于在我的 JS 代码中强制使用尾随逗号。

      当所有其他方法都失败时,请注意 IDE 中的编译错误...

      【讨论】:

      • 感谢您发布答案!今天有同样的事情,不知道要怀疑结尾的逗号!
      • 没问题,我尽量避免成为this guy
      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 2020-01-25
      • 2020-12-09
      • 1970-01-01
      • 2020-12-15
      • 2019-06-20
      • 1970-01-01
      相关资源
      最近更新 更多