es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Proyecto de NextJS no genera páginas estáticas durante la construcción. Falla con error de tiempo de espera.

Estoy trabajando en un proyecto de NextJS con TypeScript. Por alguna extraña razón, no se está compilando correctamente, ya sea para desarrollo o producción. Falla con un error de tiempo de espera como se muestra en la siguiente traza de error:

Ocurrió un error de compilación
Error: La generación de la página estática para /posts/introducing-hapana-v1 todavía se está agotando después de 3 intentos. Consulta más información aquí https://nextjs.org/docs/messages/static-page-generation-timeout
en onRestart (/app/node_modules/next/dist/build/index.js:487:31)
en Worker.exportPage (/app/node_modules/next/dist/lib/worker.js:49:40)
en runMicrotasks ()
en processTicksAndRejections (node:internal/process/task_queues:96:5)
en async /app/node_modules/next/dist/export/index.js:412:32
en async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:74:20)
en async Promise.all (index 3)
en async /app/node_modules/next/dist/export/index.js:407:9
en async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:74:20)
en async /app/node_modules/next/dist/build/index.js:987:17

A continuación se muestra la página dinámica [slug].tsx

const PostDetailsPage: React.FC<postdetailsprops> = (props) => {
  // console.log(post);

  const { post, posts } = props;

  if (!post || !posts) return <loader></loader>;

  return <post post="{post}" posts="{posts}"></post>;
};

export async function getStaticProps(context: any) {
  const slug = context.params.slug;

  const { data: postData } = await getPost(slug);
  const { data: posts }: DataInterface = await getBlogPosts(1);

  return {
    props: {
      post: postData,
      posts: posts.results,
    },
  };
}

export async function getStaticPaths() {
  const { data: posts }: DataInterface = await getBlogPosts(1);
  const slugs = posts.results.map((p) => ({ params: { slug: p.slug } }));

  return {
    paths: slugs,
    fallback: true,
  };
}

export default PostDetailsPage;

export const getBlogPosts = (page: number) => {
  return http.get(apiEndpoint + `posts/?cats=blog&page=${page}`);
};

export const getPost = (postSlug: string) => {
  return http.get(postUrl("posts/" + postSlug + "/"));
};

Please note `http` is just an axios interceptor function

Could anyone help me resolve this issue?

Tenga en cuenta que http es solo una función de interceptor de axios.

¿Alguien podría ayudarme a resolver este problema?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que la generación de páginas estáticas para la ruta /posts/introducing-hapana-v1 se está agotando después de 3 intentos. El mensaje de error sugiere visitar el enlace https://nextjs.org/docs/messages/static-page-generation-timeout para obtener más información sobre este error.

    Según los fragmentos de código proporcionados, no parece haber problemas obvios que puedan causar este error. Sin embargo, hay algunas cosas que se pueden intentar para resolver el problema:

    1. Aumentar el límite de tiempo de espera: Por defecto, Next.js establece un tiempo máximo de espera de 90 segundos para la Generación Estática. Si se alcanza este límite, el proceso de compilación puede fallar con un error de tiempo de espera. Puede intentar aumentar el límite de tiempo de espera configurando la variable de entorno STATIC_PAGE_GENERATION_TIMEOUT en un valor más alto en su archivo next.config.js.
    module.exports = {
      env: {
        STATIC_PAGE_GENERATION_TIMEOUT: "120000", // 2 minutos
      },
    }
    
    1. Optimizar el código: Si el código tarda demasiado en generar las páginas estáticas, puede ser necesario optimizarlo. Puede intentar optimizar el código eliminando código innecesario o haciéndolo más eficiente.
    2. Desactivar la Generación Estática: Si ninguna de las soluciones anteriores funciona, puede intentar desactivar la Generación Estática para la página problemática estableciendo fallback: true en la función getStaticPaths. Esto generará la página de forma dinámica en su lugar, lo cual puede llevar más tiempo pero debería evitar el error de tiempo de espera.

    export async function getStaticPaths() {
      const { data: posts }: DataInterface = await getBlogPosts(1);
      const slugs = posts.results.map((p) => ({ params: { slug: p.slug } }));
      return {
        paths: slugs,
        fallback: true,
      };
    }
    

    También es una buena idea revisar los registros del servidor para ver si hay alguna información adicional sobre por qué el proceso de compilación está fallando.

Comments are closed.