Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

778
Visualizações
Obtener datos de la próxima API local en getStaticProps en Next js

Estoy obteniendo datos en getStaticProps() en Next js y esto funciona bien en el desarrollo local pero genera un error en la next build ya que el servidor no está disponible en next build

 FetchError: request to http://localhost:3000/api/cs failed, reason: connect ECONNREFUSED 127.0.0.1:3000

Después de leer algunas discusiones en GitHub, me di cuenta de que no puede usar fetch directamente en getStaticProps. Entonces, separé la lógica de búsqueda en un archivo separado y llamé a la función dentro de getStaticProps . Aquí está el código ..

 export async function getStaticProps({ params }) { const data = await getData(params.id); return { props: { data, }, }; } export async function getStaticPaths() { return { paths: [ { params: { id: "cs" } }, { params: { id: "hyd" } }, { params: { id: "cass" } }, ], fallback: false, }; }

y el código getData está en otro archivo

 export async function getData(id){ const res = await fetch(`http://localhost:3000/api/${id}`) const data = await res.json() return data }

Este código funciona en el desarrollo local, pero genera errores en la next build en la que se rechaza la conexión porque el servidor no está disponible en el modo de compilación. Así que hice que el servidor se ejecutara en otra terminal, pero esto genera un error en la instancia de WriteStream.

 Error: EPERM: operation not permitted, open 'D:\next-project\next-website\.next\trace' Emitted 'error' event on WriteStream instance at: at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -4048, code: 'EPERM', syscall: 'open', path: 'D:\\next-project\\next-website\\.next\\trace' }

Puedo obtener los datos del lado del cliente, pero quería probar getStaticProps ya que el número de páginas es solo 3. ¿Cuál es la forma correcta de obtener la siguiente API local para crear una página estática?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No obtenga una ruta API de getStaticProps o getStaticPaths No debe obtener una ruta API de getStaticProps o getStaticPaths. En su lugar, escriba su código del lado del servidor directamente en getStaticProps o getStaticPaths (o llame a una función auxiliar).

He aquí por qué: getStaticProps y getStaticPaths se ejecutan solo en el lado del servidor y nunca se ejecutarán en el lado del cliente. Además, estas funciones no se incluirán en el paquete JS para el navegador. Eso significa que puede escribir código como consultas directas a la base de datos sin enviarlas a los navegadores. Lea la documentación de escritura del código del lado del servidor para obtener más información.

https://nextjs.org/learn/basics/api-routes/api-routes-detalles

Por lo tanto, no obtenga datos de la ruta API local en la función getData. Obtenlo desde donde lo obtiene la ruta API.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda