Tengo un proyecto con las siguientes dependencias:
"dependencies": { "@hapi/joi": "^17.1.1", "bcrypt": "^5.0.1", "config": "^3.3.7", "express": "^4.17.3", "express-async-errors": "^3.1.1", "express-rest-i18n": "^1.0.1", "http-status-codes": "^2.2.0", "i18next": "^21.6.14", "i18next-http-backend": "^1.4.0", "i18next-http-middleware": "^3.2.0", "joi": "^17.4.2", "lodash": "^4.17.21", "mongoose": "^6.2.4", "validator": "^13.7.0" },mi código de configuración i18n es el siguiente:
const i18next = require("i18next").default; const Backend = require("i18next-http-backend").default; const i18nextMiddleware = require("i18next-http-middleware"); i18next .use(Backend) .use(i18nextMiddleware.LanguageDetector) .init({ backend: { loadPath: __dirname + `/locales/{{lng}}/{{ns}}.json`, }, fallbackLng: "en", preload: ["en"], }); module.exports = { i18next };El código de mi aplicación es el siguiente:
const { i18next } = require("../locales/i18n"); const messages = require("../locales/en/translation.json"); const i18nextMiddleware = require("i18next-http-middleware"); require("express-async-errors"); const express = require("express"); const app = express(); app.use(express.json()); app.use(i18nextMiddleware.handle(i18next)); app.get("*", (req, res) => { const response = req.t("greeting"); res.status(200); res.send(response); }); const port = process.env.PORT || 3000; module.exports = app.listen(port, () => console.log(`Listening on port: ${port}`) );Cuando inicio la aplicación ejecutando npm start, recibo el error: TypeError: Cannot read property 'use' of undefined
Este error existe porque el Backend en el archivo de configuración no está definido. He usado https://www.npmjs.com/package/i18next-http-middleware como recurso.
¿Por qué recibo este error y cómo puedo solucionarlo?
¿Por qué está accediendo a .default?
Solo importa así:
const i18next = require("i18next"); const Backend = require("i18next-http-backend");