NextJS Необязательный перехват всех маршрутов, которые не работают при развертывании

У нас есть проект, содержащий один динамический маршрут [productId], и внутри этой страницы у нас есть несколько других страниц, которые включают необязательные маршруты для приема всей почты домена. Вот структура папки страниц:

      [productId]
  contentOne
    [[...slugOne]]
 

Проблема в том, что необязательный комплексный прием не работает должным образом всякий раз, когда страницы создаются статически. Пример: productId / contentOne не работает, но productOne / contentOne / extra работает. Проблема возникает только при развертывании в vercel. Все маршруты отлично работают на локальных.

Вот getStaticPaths:

      export async function getStaticPaths() {    
  return {    
    paths: [],    
     fallback: true,    
   }    
 } 

Вот getStaticProps :

      export async function getStaticProps({ locale }) {
  return {
    props: {
      test: 'test',
      ...(await serverSideTranslations(locale, ['common'])),
    }
  }
}

2 ответа

У нас есть открытая проблема для этого: https://github.com/vercel/next.js/issues/30631

Между тем, нам пришлось использовать перезапись (это входит в файл next.config):

      async rewrites() {
return {

  beforeFiles: [

   {
     source: '/:productId/contentOne',
     destination: '/:productId/contentOne/index'
   }
  ]
}

Когда используешь getStaticPaths для создания ваших страниц, установив { fallback: true } не приводит к ошибке 404. Во время разработки это работает, потому что при разработке используется версия автоматической статической оптимизации, в которой Next обслуживает сайт, отображаемый на сервере, даже если страницы будут статичными.

Если вы используете SSR-сайт с Next, то при настройке будет отображаться статическая страница с пустыми реквизитами. Это ожидаемое поведение (если это то, что происходит с вами), и вы обязаны обрабатывать эту страницу либо путем перенаправления на стороне клиента, либо путем отображения вашей собственной страницы 404-типа или отсутствующей страницы содержимого.

Если вы используете для создания и экспорта своих страниц, тогда настройка fallback ничего не делает (ожидаемое поведение при использовании next export), что означает, что страницы просто не будет, и ваш сервер должен обработать 404, либо обслуживая страницу с ошибкой 404, либо перенаправляя пользователя в другое место.

Я не уверен, что вы имеете в виду под словом «не работает» - это ошибка 404 или пустая страница? В любом случае, вот почему.

Другие вопросы по тегам