"No construir correctamente" que significa "no terminar de construir en absoluto". Configuré un proyecto de blog muy básico con SSR dinámico que obtiene datos de Notion-API para generar páginas de blog estáticas. Todo funciona bien cuando lo ejecuto en el next dev desarrollo; sin embargo, cuando intento construir el proyecto, se ejecuta en un bucle sin fin sin que se muestre ningún error.
Un pensamiento que tuve fue el siguiente:
Si entiendo la secuencia de todo correctamente, Next.js ya intenta construir los sitios estáticos durante la next build . La generación dinámica del sitio se basa en una API que también he codificado dentro del mismo proyecto, que reenvía las solicitudes a Notion para ofuscar los secretos. Obviamente, ninguna API local estará activa durante la compilación, ¿supongo que es el error con el que me estoy topando?
Para ilustrar, aquí está el código de las páginas que se van a generar:
import Head from 'next/head'; export default function Post( { postData, postBlocks } ) { console.log( { postData, postBlocks } ); return ( <> <Head> <title>Placeholder</title> <meta name="description" content="" /> </Head> <h1>Placeholder</h1> </> ) } // Get further info on the specific "Post" from Notion via my API export async function getStaticProps( { params } ) { const postDataRequest = fetch( `${ process.env.API_ROOT }/posts/${ params.id }` ); const postBlocksRequest = fetch( `${ process.env.API_ROOT }/blocks/${ params.id }` ); const [ postData, postBlocks ] = await Promise.all( ( await Promise.all( [ postDataRequest, postBlocksRequest ] ) ) .map( response => response.json() ) ); return { props: { postData, postBlocks: postBlocks.results }, revalidate: 86400, }; } // Fetch all "Posts" from Notion via my API, get their ID and generate a static route for each export async function getStaticPaths() { const req = await fetch( `${ process.env.API_ROOT }/posts?limit=999` ); const data = await req.json(); const paths = data.results.map( page => { return { params: { id: page.id } }; } ) return { paths, fallback: false, }; }También intenté iniciar la API localmente y construir el proyecto en otra terminal, esto tampoco funcionó. ¿Me he perdido algo en alguna parte?
También publiqué mi proyecto en GitHub para una inspección más detallada.
Resolví este pensando mucho sobre si una API era realmente necesaria. Dado que ya tengo acceso a las claves de noción en todo el proyecto en process.env , no hay una necesidad real de crear una API. Mover la lógica de consulta a funciones auxiliares a las que simplemente puedo llamar resolvió todos los problemas que enfrenté.
Aprendizaje: no se limite a crear API para todo. Puede que solo te haga la vida más difícil.