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.

Problema con Nuxt3 + Netlify Functions + Rewrite

Mis reescrituras no funcionan en netlify/producción, pero no tengo problemas al ejecutarlas localmente con netlify dev.

El archivo netlify.toml se ve así:

[build]
command = "npm run build"
functions = "functions"
publish = "dist"

<p>[[redirects]]
from = '/api/*'
to = '/.netlify/functions/:splat'
force = true
status = 200

El comando npm run build simplemente llama a nuxi build.

Ahora, en localhost puedo llamar a /api/something y funciona sin problemas. La misma llamada falla cuando se implementa en netlify. También funciona en producción cuando uso /.netlify/functions/something.

Ahora lo extraño: cuando elimino publish = "dist" del archivo netlify.toml, puedo llamar a /api/something en producción, pero luego el código de nuxt no funciona, como todas las páginas.

Configuré las funciones primero y mi cliente de escritorio ya las está utilizando, lo cual se rompe cuando solo uso /.netlify/functions/something porque ya están utilizando /api/something.

¿Alguien tiene una configuración similar que pueda ayudarme con esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con tus reescrituras que no funcionan en Netlify/producción puede deberse a la configuración publish en tu archivo netlify.toml.

    Cuando eliminas publish = "dist", tus reescrituras funcionan en producción pero luego tu código de Nuxt deja de funcionar. Esto sugiere que la configuración publish está afectando el comportamiento de tus reescrituras.

    Una posible solución para probar es modificar tu configuración de redirects para incluir una ruta base. Esto se puede hacer agregando una barra diagonal inicial a la ruta “from”:

    [[redirects]]
    from = '/api/*'
    to = '/.netlify/functions/:splat'
    force = true
    status = 200
    basePath = ''
    

    Al agregar la configuración basePath y establecerla como una cadena vacía, le estás indicando a Netlify que aplique las reglas de reescritura a la ruta raíz en lugar del directorio publish. Esto debería permitir que tus reescrituras funcionen como se espera.

    Otra solución posible es especificar la basePath en tu archivo nuxt.config.js, de la siguiente manera:

    export default {
      router: {
        base: '/dist/'
      }
    }
    

    Al establecer la propiedad base del objeto router en tu directorio publish, le estás indicando a Nuxt que utilice ese directorio como la ruta base para todas tus rutas. Esto también debería permitir que tus reescrituras funcionen como se espera.

    ¡Esperamos que una de estas soluciones ayude a resolver tu problema!

Comments are closed.