Как сгенерировать локализованные маршруты Dynami c с помощью nuxt и nuxt-i18n? - PullRequest
4 голосов
/ 16 июня 2020

Я пытаюсь заставить nuxt генерировать локализованные динамические c маршруты. Я использовал nuxt-i18n для перевода каждого маршрута.

Вот моя конфигурация nuxt-i18n:

['nuxt-i18n', {
  lazy: true,
  locales: [
    {
      name: 'French',
      code: 'fr',
      iso: 'fr-ch',
      file: 'fr.json'
    },
    {
      name: 'German',
      code: 'de',
      iso: 'de-ch',
      file: 'de.json'
    },
    {
      name: 'Italian',
      code: 'it',
      iso: 'it-ch',
      file: 'it.json'
    },
  ],
  langDir: 'lang/',
  defaultLocale: 'fr',
  parsePages: false,
  pages: {
    'advice/_uid': {
      fr: '/conseil/:uid',
      de: '/ratschlag/:uid',
      it: '/consiglio/:uid',
    },
  }
}]

Как написано в документации:

Dynami c маршруты игнорируются командой generate (yarn generate). Nuxt не знает, какими будут эти маршруты, поэтому не может их сгенерировать.

Поэтому я попытался адаптировать их пример и использовал Api моей безголовой CMS для реконструкции всех маршрутов. но, к сожалению, nuxt по какой-то причине их не генерирует. Я попытался использовать файловую структуру (это /advice/_uid.vue) вместо локализованного маршрута, надеясь, что nuxt-i18n позаботится об этом за меня, но и с этой стороны не повезло.

Вот мой nuxt. config. js:

import Prismic from 'prismic-javascript'
const prismicEndpoint = 'https://some-repository.cdn.prismic.io/api/v2'

const advices = () =>
  Prismic.getApi(prismicEndpoint)
  .then(api =>
    api.query(Prismic.Predicates.at('document.type', 'advice'), {
      pageSize: 100,
    })
  )
  .then(res => {
    return [
      ...res.results.map(advice => `/conseil/${advice.uid}`),
    ]
  })

// Some more code...

export default {
  // Some more code...

  generate: {
    fallback: '404.html',
    advices
  }
}

Когда я запускаю npm run generate, ошибок нет, хотя он не генерирует ни один из этих маршрутов. Раньше он работал довольно хорошо, прежде чем я использовал nuxt-i18n для локализации моих маршрутов.

Есть ли способ заставить nuxt или nuxt-i18n генерировать локализованные dymami c маршруты?

Спасибо за ваш помогите!

1 Ответ

0 голосов
/ 24 июня 2020

Вы уверены, что здесь нет опечатки?

generate: {
  fallback: '404.html',
  advices
}

Ваша функция должна иметь routes в качестве ключа, поэтому он должен быть:

generate: {
  fallback: '404.html',
  routes: advices
}
...