Form Trigger falla en modo queue - No se puede leer propiedades de undefined (leyendo 'execute')

¡Hola a todos!

Estoy ejecutando n8n 2.21.7 en modo queue (EXECUTIONS_MODE=queue) con
PostgreSQL y Redis, alojado en Easypanel con Docker.

Construí un flujo de trabajo usando un Form Trigger con responseMode establecido en
‘lastNode’, seguido de un nodo AI Agent (OpenAI), y un nodo de
completación de formulario para mostrar el resultado en pantalla.

El flujo de trabajo funciona perfectamente cuando lo pruebo manualmente dentro del editor.
Pero cuando envío el formulario en producción, falla inmediatamente con este error:

“Cannot read properties of undefined (reading ‘execute’)”

Lo extraño es que runData está completamente vacío cuando ocurre el error
— parece que falla antes de que cualquier nodo comience a ejecutarse.
El stack trace apunta a bull@4.16.4 Queue.onFailed.

Todos mis otros flujos de trabajo funcionan bien en producción. El problema parece específico
del Form Trigger cuando necesita mantener la conexión abierta esperando
la respuesta del último nodo.

Ya intenté establecer N8N_RUNNERS_ENABLED=false pero el error persiste.

¿Alguien se ha enfrentado a esto antes? ¿Alguna idea sobre qué podría estar causándolo?

¡Gracias!

este error “Cannot read properties of undefined (reading ‘execute’)” aparece en diferentes combinaciones de modo de cola — "On form submission" trigger not working using the production URL · Issue #19317 · n8n-io/n8n · GitHub tiene el mismo patrón para form triggers en URLs de producción, y Postgres Node Fails in Queue Mode: “Cannot read properties of undefined (reading ‘execute’)” · Issue #15154 · n8n-io/n8n · GitHub lo encontró con Postgres en modo de cola. #15154 se cerró como “not planned” sin solución, así que es un bug abierto de n8n, no algo de tu lado.

vale la pena probar como workaround: cambia el “Respond When” del Form Trigger de “Workflow Finishes” a “Form Is Submitted”. pierdes la visualización del resultado en vivo en la página del formulario pero la respuesta vuelve inmediatamente al enviar, lo que evita lo que la transferencia de cola está haciendo mal. ¿ya lo intentaste?

Hola @ricardo_balako

El error que estás experimentando, “Cannot read properties of undefined (reading ‘execute’)”, es un síntoma clásico de un fallo de comunicación en el modo de cola de n8n. Dado que tu flujo de trabajo funciona correctamente dentro del editor pero falla en producción, el problema casi con certeza no está en la lógica de tu flujo de trabajo en sí, sino en cómo tu entorno distribuido está manejando el trabajo. En modo de cola, la instancia principal envía una tarea a un proceso worker separado, y si ese worker no puede inicializar correctamente el nodo requerido, se bloquea antes de poder comenzar siquiera la ejecución.

La causa más común de esto es una falta de coincidencia de versiones entre tu instancia principal y tu instancia worker. Incluso si ambas parecen estar ejecutando la última versión, las diferencias sutiles en las imágenes de Docker subyacentes pueden impedir que se comuniquen correctamente. Es esencial asegurar que ambos servicios estén utilizando explícitamente la misma etiqueta de imagen exacta y que realices un redesplegue completo de ambos componentes simultáneamente para garantizar que estén sincronizados.

Otro factor crítico es la consistencia de tus variables de entorno en toda tu infraestructura. Tus servicios principal y worker deben compartir la misma configuración exacta, particularmente respecto a la clave de cifrado, los detalles de conexión de la base de datos y la configuración de Redis. Si el worker carece de la configuración correcta, puede fallar al autenticarse con tu base de datos o Redis, provocando el error “undefined” cuando intenta recuperar los datos del flujo de trabajo que necesita para iniciar el trabajo.

También deberías verificar que tu servicio worker esté configurado para ejecutarse específicamente como un proceso worker. En tu configuración de Easypanel, confirma que el comando para tu contenedor worker esté establecido en worker (por ejemplo, n8n worker). Además, establecer la variable de entorno N8N_REINSTALL_MISSING_PACKAGES=true en tu worker es una buena práctica, ya que asegura que el worker tenga todas las dependencias necesarias, como las requeridas por el nodo AI Agent, que podrían faltar en un entorno worker nuevo.

El hecho de que el error apunte a bull (la biblioteca de gestión de colas) confirma que el fallo está ocurriendo a nivel de infraestructura. La mejor manera de llegar al fondo de esto es ignorar los registros principales de n8n y enfocarse exclusivamente en los registros del contenedor worker en el momento exacto en que envíes el formulario. Estos registros específicos del worker a menudo proporcionarán la razón específica—como un tiempo de espera de conexión o una dependencia faltante—por la que el trabajo no se pudo inicializar.

Si has verificado el versionado, la configuración y los registros y el problema persiste, es posible que quieras hacer una prueba estableciendo EXECUTIONS_PROCESS=main en tu instancia principal como un paso diagnóstico temporal. Aunque esto evita la infraestructura de worker, confirmará si el problema está estrictamente relacionado con el sistema de colas. Si el flujo de trabajo se ejecuta bien en este modo, confirma que tu problema está aislado a la interacción entre tu instancia principal de n8n y los procesos worker.

¡Bienvenido @ricardo_balako!

La causa raíz aquí es arquitectónica: Form Trigger con responseMode=lastNode necesita que el proceso principal de n8n mantenga la conexión HTTP abierta hasta que se complete el flujo de trabajo. En modo de cola, la ejecución se delega a un worker - y esa conexión abierta no puede seguirla a través del límite del proceso. El Queue.onFailed en tu stack trace confirma que el trabajo está fallando a nivel de cola antes de que incluso comience cualquier nodo.

La solución más rápida es la que achamm sugirió - cambia “Respond When” a “Form Is Submitted.” Si necesitas mostrar el resultado de la IA al usuario, un patrón común es redirigirlo a una página de resultados que consulte un webhook o verifique un endpoint de estado.

Si realmente necesitas el modo lastNode, la única opción limpia es ejecutar esos flujos de trabajo específicos fuera del modo de cola - ya sea con EXECUTIONS_PROCESS=main en la misma instancia (no recomendado a escala) o en una instancia n8n separada sin el modo de cola habilitado.

También vale la pena verificar rápidamente: confirma que tu contenedor worker esté exactamente en la versión 2.21.7 y comparta la misma N8N_ENCRYPTION_KEY - una discrepancia ahí produce exactamente este patrón de fallo.

Vale la pena confirmar lo que ya se insinuaba: este es un bug conocido de n8n con triggers de formulario/webhook en modo de cola, no algo incorrecto en tu flujo de trabajo. Funciona en el editor porque la ejecución manual se ejecuta en el proceso principal, y falla en la URL de producción porque en modo de cola un worker la recoge y el contexto del trigger no está cableado de la misma manera.

Caminos prácticos hasta que se solucione en la fuente. Si este flujo de trabajo no necesita la escala del modo de cola, ejecútalo en modo de ejecución regular (principal) y mantén el modo de cola para los flujos de trabajo pesados. Si todo tiene que estar en modo de cola, un workaround común es dividirlo: un nodo Webhook simple recibiendo el envío del formulario (los webhooks funcionan mejor que el Form Trigger en modo de cola), luego maneja la respuesta por separado en lugar de confiar en responseMode lastNode a través del nodo de formulario.

Ya que el problema relacionado de GitHub se cerró como no planeado, no esperes a una solución. Suscríbete a él para tener visibilidad pero construye una solución alternativa ahora. ¿Exactamente qué versión de n8n estás usando, por si hay una ventana de regresión que merezca la pena señalar.

¡Resuelto! Esto es lo que funcionó para mí:

El problema era exactamente lo que @kjooleng describió — una incompatibilidad de versión entre mis servicios de n8n. Estoy ejecutando n8n en Easypanel con tres servicios separados: n8n_start, n8n_webhook y n8n_worker. Todos estaban ejecutando versiones diferentes de la imagen Docker, lo que causaba que la comunicación de la cola se rompiera antes de que se ejecutara cualquier nodo.

La solución fue simple: actualicé los tres servicios a la misma etiqueta latest y reimplementé todos simultáneamente. Después de eso, todo funcionó perfectamente en producción.

Conclusion principal: si estás ejecutando n8n en modo queue con containers separados de worker/webhook, asegúrate de que todos los servicios estén exactamente en la misma versión. Incluso una pequeña diferencia entre la instancia principal y el worker es suficiente para disparar este error.

¡Gracias a todos por la ayuda!