Tengo una aplicación Nuxt ejecutándose correctamente en mi servidor local y todas las solicitudes de API se ejecutan correctamente desde el mismo servidor (usando la propiedad serverMiddleware en nuxt.config.js ). Cuando ejecuto un yarn generate , la ruta al servidor API se pierde y no se cargan datos. A continuación se muestran algunas capturas de pantalla.
Carga datos correctamente desde la API.

No se puede encontrar la API

Aquí hay un ejemplo de una llamada api en el archivo project_dir api/index.js
const express = require("express"); const passport = require("passport"); const allRoutes = require("../api/routes/routes"); const guestRoutes = require("../api/routes/guest"); const fileUpload = require("express-fileupload"); const path = require("path"); // Create express instance const app = express(); // Init body-parser options (inbuilt with express) app.use(express.json()); app.use(fileUpload()); app.use(express.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, "../", "dist"))); /** * -------------- PASSPORT AUTHENTICATION ---------------- */ // Need to require the entire Passport config module so index.js knows about it require("./config/passport-jwt"); // Initialize Passport app.use(passport.initialize()); /** * -------------- ROUTES ---------------- */ // Imports all of the routes from ./routes/index.js app.use(guestRoutes); app.use(passport.authenticate("jwt", { session: false }), allRoutes); console.log("express"); console.log(path.join(__dirname, "../", "dist")); app.get("*", (req, res) => { res.sendFile(path.join(__dirname, "../", "dist", "index.html")); }); // Export express app module.exports = app;No sé por qué no puedo obtener datos de las rutas API que estoy ejecutando en el mismo servidor.
Aquí hay una respuesta detallada sobre cómo ejecutar un servidor Express junto con Nuxt: https://stackoverflow.com/a/72102209/8816585
Lo primero que debe saber es que no puede tener un servidor Node.js con yarn generate porque está usando target: 'static' y, como puede adivinar, cuando algo es estático, no necesita un servidor Node.js para ser servido al usuario final (solo los archivos estáticos html + css + js están alojados en un CDN o similar).
Este modo está destinado a alojar el código en Netlify, Vercel o similar, sin un servidor Node.js disponible allí.
¿Por qué funciona localmente? Porque tiene un servidor de desarrollo de Webpack en ejecución (con un servidor Node.js) para fines de depuración como HMR, etc.
TDLR: esto es normal (funciona según lo previsto hasta ahora). Más información en el enlace dado arriba sobre cómo hacer que funcione.
Después de mucha investigación y depuración, se me ocurrió una nueva idea. En lugar de ejecutar npm run start o yarn start que contiene el script "nuxt start" dentro del archivo package.json. Agregué un nuevo script con el nombre "express-start": "cross-env NODE_ENV=production node api/index.js" . Que ejecuta el servidor express y los archivos estáticos nuxt. Actualmente estoy creando una plantilla para que sea más fácil para aquellos que enfrentarán este desafío.
Enlace a un modelo que creé después de resolver el problema. Modelo estándar de ExpressJs y NuxtJs