Implementé una aplicación next.js en Vercel y estoy experimentando puntos finales escamosos.
Los 5 puntos finales se definen en pages/api/... y funcionan perfectamente en localhost, y también se llaman con poca frecuencia en localhost.
En la implementación, los puntos finales a veces devuelven un error interno, estado 500. Estoy usando middleware y me pregunto si eso podría estar causando el problema.
import cache from 'express-redis-cache'; const c = cache(); const run = (req, res) => (fn) => new Promise((resolve, reject) => { fn(req, res, (result) => result instanceof Error ? reject(result) : resolve(result) ) }) const handler = async (req, res) => { const middleware = run(req, res); await middleware(cors()); await middleware(c.route({ expire: 30 })) /** validate req type **/ if (req.method !== 'GET') { res.status(400).json({}); return; } ... También intenté eliminar express-redis-cache para uno de los puntos finales:
import Cors from 'cors'; import axios from 'axios'; // Initializing the cors middleware const cors = Cors({ methods: ['GET', 'HEAD'], }) function runMiddleware(req, res, fn) { return new Promise((resolve, reject) => { fn(req, res, (result) => { if (result instanceof Error) { return reject(result) } return resolve(result) }) }) } const handler = async (req, res) => { console.log('raised call', req); await runMiddleware(req, res, cors);Pero todos son escamosos, parece que todas las demás llamadas funcionan. Está entre el estado 500 y está funcionando.
Otro seguimiento de esto es: utilicé ganchos de reacción para asegurarme de que las llamadas a la API solo se realizaran cuando fuera necesario. ¿Hay alguna razón por la que se realizan tantas llamadas repetidas cuando estas llamadas no se realizan en localhost? Por ejemplo, tengo 4 puntos finales a los que solo se debe llamar una vez por carga de página, pero en la implementación se les llama muchas veces.