Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

776
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!