Ошибка в маршрутизации gatsby- node.js на основе локали без каких-либо сторонних зависимостей - PullRequest
0 голосов
/ 28 февраля 2020

Я создаю сайт Gatsby и хочу создать путь для двух языков без какого-либо плагина. Когда пользователь подключается к /, он будет перенаправлен на /en или /it на основе req.headers["accept-language"]. Проблема появится в onCreatePage, и это мой фрагмент:

exports.onCreatePage = ({ page, actions }) => {
const { createPage, deletePage } = actions;
deletePage(page);
Object.keys(locales).map(lang => {

//the problem is here
const localizedPath = `${locales[lang].path}${page.path}`;

return createPage({
  ...page,
  path: removeTrailingSlash(localizedPath),
  context: {
    ...page.context,
    locale: lang,
  }
 });
 });
};

Локали:

module.exports = {
  en: {
    default: true,
    path: `en`,
    locale: `en-US`,
    siteLanguage: `en`,
  },
  it: {
    path: `it`,
    locale: `it-IT`,
    siteLanguage: `it`,  
  },
}

Если вместо const localizedPath = '${locales[lang].path}${page.path}'; использовать const localizedPath = locales[lang].default ? page.path : '${locales[lang].path}${page.path}'; будет работать, но в этом случае путь /en будет заменен на путь / (например, от /en/abc до /abc) по умолчанию, и я этого не хочу. Во время gatsby develop в обоих случаях ошибки отсутствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...