Ошибка с i18n (Ошибка: вы передаете неопределенный модуль! Проверьте объект, который вы передаете в i18next.use ()) - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь настроить i18n в своем проекте Gatsby.

Я шаг за шагом следую этому руководству:

https://www.gatsbyjs.org/blog/2017-10-17-building-i18n-with-gatsby/

Сначала я загружаю необходимые пакеты:

npm i -S i18next i18next-xhr-backend i18next-browser-languagedetector react-i18next

Затем я настраиваю компонент i18n

import i18n from "i18next"
import Backend from "i18next-xhr-backend"
import LanguageDetector from "i18next-browser-languagedetector"
import { reactI18nextModule } from "react-i18next"

i18n
.use(Backend)
.use(LanguageDetector)
.use(reactI18nextModule)
.init({
    fallbackLng: "en",

    // have a common namespace used around the full app
    ns: ["translations"],
    defaultNS: "translations",

    debug: true,

    interpolation: {
    escapeValue: false, // not needed for react!!
    },

    react: {
    wait: true,
    },
})

export default i18n

Импортировал его в свой компонент макета:

import React from "react"
import "./layout.scss"
import NavMenu from "./NavMenu/navMenu"
import i18n from './i18n/i18n'

export default function Layout({ children }) {
  return (
    <div className="container">
      <NavMenu />
      {children}
    </div>
  )
}

Однако, когда я запускаю свое приложение, я получаю следующую ошибку:

введите описание изображения здесь

Кто-нибудь знает, в чем может быть проблема?

1 Ответ

0 голосов
/ 12 июля 2020

Импорт из react-i18next неверен. Это должно быть

import { initReactI18next } from "react-i18next"

и

.use(initReactI18next)

Если вы пытаетесь импортировать что-то, что не экспортируется, значение не определено, а затем use дает вам сообщение, которое вы видите.

Похоже, он назывался reactI18nextModule в более ранней версии react-i18next, поэтому вы можете найти учебники, использующие его.

Я сделал демонстрацию экспорта в RunKit

...