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.

¿Cómo escanear directorios en producción en Vercel (con Next.js)?

He desarrollado un script JS para que funcione como sitemap.xml cuando se accede a través de la URL (por ejemplo: mydomain.com/sitemap.xml), que mostrará las páginas de mi proyecto. Cuando se ejecuta en desarrollo (yarn dev) funciona bien, también funciona cuando se ejecuta después de construir y comenzar en mi PC (yarn build y yarn start). El problema es que en Vercel no funciona, el error es:

[GET] /sitemap.xml
19:39:16:85
Estado de la función:
Ninguno
Estado de Edge:
500
Duración:
146,30 ms
Duración de inicio:
446.50 ms
Memoria utilizada:
80 MB
info – Cargado el entorno desde /var/task/.env.production
info – Cargado el entorno desde /var/task/.env
2021-11-18T19:39:17.673Z 68ecb71f-eede-4cbd-81a9-5c677f11e556 ERROR Error: ENOENT: no existe el archivo o directorio, scandir ‘/var/task/.next/server/pages/projects’
en Object.readdirSync (fs.js:1047:3)
en getServerSideProps (/var/task/.next/server/pages/sitemap.xml.js:38:56)
en Object.renderToHTML (/var/task/node_modules/next/dist/server/render.js:504:26)
en processTicksAndRejections (internal/process/task_queues.js:95:5)
en async doRender (/var/task/node_modules/next/dist/server/next-server.js:1428:38)
en async /var/task/node_modules/next/dist/server/next-server.js:1523:28
en async /var/task/node_modules/next/dist/server/response-cache.js:63:36 {
errno: -2,
syscall: ‘scandir’,
path: ‘/var/task/.next/server/pages/projects’,
page: ‘/sitemap.xml’
}
RequestId: 68ecb71f-eede-4cbd-81a9-5c677f11e556 Error: La ejecución finalizó con error: estado de salida 1
Runtime.ExitError

La pieza de código en mi sitemap.xml.js que realiza ese trabajo es:

const staticPagesProjects = fs
.readdirSync({
development: ‘src/pages/projects’,
production: __dirname + ‘/projects’,
}[process.env.NODE_ENV])
.filter((staticPagesProjects) => {
return regex.test(staticPagesProjects) && (staticPagesProjects != “index.html”) && (staticPagesProjects != “404.html”) && (staticPagesProjects != “500.html”);
})
.map((staticPagePath) => {
return ${baseUrl}/projects/${staticPagePath.replace(".html", "")};
});

¿Alguien podría decirme qué está mal con la ruta y por qué funciona en mi PC pero no en Vercel? ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la ruta de tu archivo sitemap.xml.js. El mensaje de error indica que el directorio /var/task/.next/server/pages/projects no existe. Parece que la ruta es diferente cuando se ejecuta en Vercel que cuando se ejecuta en tu máquina local. Es posible que debas ajustar la ruta en tu código para que coincida con la ruta en Vercel.

Comments are closed.