{"id":287,"date":"2026-10-22T14:27:55","date_gmt":"2026-10-22T12:27:55","guid":{"rendered":"https:\/\/n8nfacil.com\/?p=287"},"modified":"2026-11-02T18:48:54","modified_gmt":"2026-11-02T17:48:54","slug":"errores-n8n-depurar-datos","status":"publish","type":"post","link":"https:\/\/n8nfacil.com\/en\/errores-n8n-depurar-datos\/","title":{"rendered":"Errores en n8n: encuentra el dato que falla y comprueba la correcci\u00f3n"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>Proyecto local probado:<\/strong> n8n 2.44.5, 22 de octubre de 2026. Datos ficticios.<\/p><p class=\"wp-block-paragraph\">Un nodo rojo se\u00f1ala d\u00f3nde se ha detenido una ejecuci\u00f3n, pero la causa puede estar en sus datos de entrada. Este tutorial reproduce un problema peque\u00f1o: intentar limpiar un email que no existe. Despu\u00e9s lo corregiremos conservando una se\u00f1al que permita revisar el registro incompleto.<\/p><h2 class=\"wp-block-heading\">Dos proyectos para comparar<\/h2><p class=\"wp-block-paragraph\">El ZIP incluye una versi\u00f3n que provoca el problema y otra que lo trata. Utiliza datos ficticios y ejecuciones manuales. Importa cada JSON en un workflow separado para poder comparar la entrada, la configuraci\u00f3n y el resultado sin perder la versi\u00f3n inicial.<\/p><p class=\"wp-block-paragraph\">El primer proyecto contiene Ejecutar prueba, Entrada sin email y Normalizar sin comprobar. La entrada solo tiene nombre: Ana. El campo email no est\u00e1 presente. El segundo proyecto sustituye el \u00faltimo paso por Revisar email.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1101\" height=\"874\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-flujo.jpg\" alt=\"Workflow detenido en el nodo que intenta limpiar un email ausente.\" class=\"wp-image-271\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-flujo.jpg 1101w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-flujo-300x238.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-flujo-1024x813.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-flujo-768x610.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-flujo-15x12.jpg 15w\" sizes=\"auto, (max-width: 1101px) 100vw, 1101px\" \/><figcaption class=\"wp-element-caption\">Workflow detenido en el nodo que intenta limpiar un email ausente.<\/figcaption><\/figure><h2 class=\"wp-block-heading\">1. Ejecuta y lee el error<\/h2><p class=\"wp-block-paragraph\">Abre el proyecto inicial y pulsa Execute workflow. Revisa el \u00faltimo nodo y su mensaje. No cambies varias opciones a la vez: primero identifica qu\u00e9 expresi\u00f3n intenta ejecutarse y sobre qu\u00e9 dato.<\/p><p class=\"wp-block-paragraph\">El nodo Code Normalizar sin comprobar intenta aplicar trim y toLowerCase a item.json.email. Esos m\u00e9todos requieren un texto. Si email no existe, esa suposici\u00f3n no se cumple. En lugar de a\u00f1adir reintentos, revisa la estructura que recibe el nodo: repetir la misma entrada incompleta no la corrige.<\/p><h2 class=\"wp-block-heading\">2. Compara entrada y expresi\u00f3n<\/h2><p class=\"wp-block-paragraph\">Abre la entrada del \u00faltimo nodo y busca la propiedad email. Comprueba si se llama de otra forma, si est\u00e1 dentro de body o si falta por completo. En un Webhook, por ejemplo, el cuerpo recibido puede estar dentro de $json.body y no directamente en $json.email.<\/p><p class=\"wp-block-paragraph\">En la versi\u00f3n probada, una expresi\u00f3n similar dentro de Edit Fields puede terminar sin error de ejecuci\u00f3n y devolver null. Por eso el ejemplo que se detiene utiliza Code: permite observar un error de JavaScript real. Un nodo verde con email vac\u00edo o null sigue necesitando revisi\u00f3n. Revisar la estructura evita soluciones que solo esconden el s\u00edntoma. Si el campo se ha perdido en un Edit Fields anterior, quiz\u00e1 debas conservarlo all\u00ed. Si el formulario nunca lo envi\u00f3, la automatizaci\u00f3n necesita decidir qu\u00e9 hacer con ese registro.<\/p><h2 class=\"wp-block-heading\">3. A\u00f1ade una comprobaci\u00f3n de tipo<\/h2><p class=\"wp-block-paragraph\">La versi\u00f3n corregida utiliza Edit Fields y comprueba typeof $json.email === \u00abstring\u00bb antes de limpiar el texto. Si es un texto, elimina espacios y lo pasa a min\u00fasculas. Si no, devuelve un email vac\u00edo y el campo estado con el valor revisar_email.<\/p><p class=\"wp-block-paragraph\">Ese estado es importante: un nodo que termina sin error no demuestra que los datos est\u00e9n completos. No estamos validando direcciones ni inventando un email. Estamos haciendo visible que el registro requiere otra decisi\u00f3n antes de continuar hacia una herramienta de destino.<\/p><h2 class=\"wp-block-heading\">4. Verifica dos situaciones<\/h2><p class=\"wp-block-paragraph\">Con la entrada que solo contiene Ana, el resultado debe conservar nombre y mostrar estado revisar_email. Despu\u00e9s a\u00f1ade email con espacios y may\u00fasculas, por ejemplo ANA@EXAMPLE.COM, y ejecuta otra vez: esperamos ana@example.com y estado listo.<\/p><p class=\"wp-block-paragraph\">Revisa siempre la \u00faltima ejecuci\u00f3n. Puedes tener abierta una salida anterior mientras has modificado la entrada. La comprobaci\u00f3n \u00fatil consiste en relacionar el dato enviado, el recorrido ejecutado y el resultado, no en mirar \u00fanicamente el color del nodo.<\/p><h2 class=\"wp-block-heading\">Qu\u00e9 hacer con el registro incompleto<\/h2><p class=\"wp-block-paragraph\">Puedes colocar un IF despu\u00e9s de Revisar email para separar listo de revisar_email. Durante el aprendizaje basta con mostrar las dos salidas. No env\u00edes autom\u00e1ticamente un mensaje a una direcci\u00f3n vac\u00eda ni guardes un registro incompleto como si fuera correcto.<\/p><p class=\"wp-block-paragraph\">La opci\u00f3n de continuar despu\u00e9s de un error puede ser \u00fatil si dise\u00f1as qu\u00e9 ocurre con esa salida, pero activarla sin revisar el resultado no sustituye la validaci\u00f3n. Lo mismo ocurre con los reintentos: tienen sentido ante ciertos fallos temporales, no ante un campo que falta siempre.<\/p><h2 class=\"wp-block-heading\">Un m\u00e9todo de depuraci\u00f3n reutilizable<\/h2><p class=\"wp-block-paragraph\">Reduce el problema a una entrada peque\u00f1a, localiza el \u00faltimo nodo que recibi\u00f3 datos v\u00e1lidos, revisa los tipos y modifica una causa cada vez. Conserva un caso que fallaba y comprueba que sigue trat\u00e1ndose correctamente tras los cambios. Ese peque\u00f1o ensayo te servir\u00e1 cuando el workflow tenga m\u00e1s nodos.<\/p><p class=\"wp-block-paragraph\">Fuente oficial: <a href=\"https:\/\/docs.n8n.io\/flow-logic\/error-handling\/\">https:\/\/docs.n8n.io\/flow-logic\/error-handling\/<\/a><\/p><h2 class=\"wp-block-heading\">Resultados comprobados<\/h2><p class=\"wp-block-paragraph\">El proyecto inicial se detiene con un error al leer trim; la versi\u00f3n corregida devuelve estado revisar_email para el registro incompleto.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1101\" height=\"874\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-detalle.jpg\" alt=\"Error real de JavaScript al llamar a trim sobre un dato inexistente.\" class=\"wp-image-272\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-detalle.jpg 1101w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-detalle-300x238.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-detalle-1024x813.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-detalle-768x610.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-detalle-15x12.jpg 15w\" sizes=\"auto, (max-width: 1101px) 100vw, 1101px\" \/><figcaption class=\"wp-element-caption\">Error real de JavaScript al llamar a trim sobre un dato inexistente.<\/figcaption><\/figure><figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1101\" height=\"874\" loading=\"eager\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-corregido.jpg\" alt=\"La versi\u00f3n corregida conserva a Ana y marca el registro como revisar_email.\" class=\"wp-image-273\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-corregido.jpg 1101w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-corregido-300x238.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-corregido-1024x813.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-corregido-768x610.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-error-corregido-15x12.jpg 15w\" sizes=\"(max-width: 1101px) 100vw, 1101px\" \/><figcaption class=\"wp-element-caption\">La versi\u00f3n corregida conserva a Ana y marca el registro como revisar_email.<\/figcaption><\/figure><h2 class=\"wp-block-heading\">Descarga para practicar<\/h2><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/08-depurar-errores.zip\">Descargar proyecto en ZIP<\/a>. Descomprime los archivos y revisa sus instrucciones antes de importarlos. No contienen credenciales ni la base de datos de la instalaci\u00f3n.<\/p><h2 class=\"wp-block-heading\">Tutoriales relacionados<\/h2><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/importar-exportar-workflows-n8n\/\">Importar y exportar workflows<\/a> \u00b7 <a href=\"https:\/\/n8nfacil.com\/limpiar-datos-n8n-edit-fields\/\">Limpiar datos con Edit Fields<\/a> \u00b7 <a href=\"https:\/\/n8nfacil.com\/nodo-if-n8n-clasificar-pedidos\/\">Practicar IF<\/a><\/p><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/copia-seguridad-n8n-docker-restaurar\/\">Copia de seguridad de n8n con Docker en Windows: prueba tambi\u00e9n la restauraci\u00f3n<\/a><\/p><section><h2>Construye este workflow desde cero<\/h2><p>Puedes crear los nodos manualmente en lugar de importar el ZIP. Los ajustes siguientes corresponden al archivo del proyecto y a la versi\u00f3n indicada al comienzo de la gu\u00eda; los nombres de los controles pueden variar en otras versiones.<\/p><h3>Ejecutar prueba \u00b7 Manual Trigger<\/h3><p>A\u00f1ade Manual Trigger como inicio del flujo. Permite ejecutar la pr\u00e1ctica pulsando Execute workflow, sin publicar un disparador autom\u00e1tico.<\/p><h3>Entrada sin email \u00b7 Code<\/h3><p>A\u00f1ade Code, selecciona JavaScript y Run Once for All Items. Sustituye el c\u00f3digo de ejemplo por:<\/p><pre><code>return [{&quot;nombre&quot;:&quot;Ana&quot;}].map(json =&gt; ({json}));<\/code><\/pre><h3>Revisar email \u00b7 Edit Fields (Set)<\/h3><p>A\u00f1ade Edit Fields (Set) y selecciona Manual Mapping. Crea los siguientes campos; utiliza Fixed para valores literales y Expression para f\u00f3rmulas. Conserva solo los campos configurados para reproducir la salida del proyecto.<\/p><figure class=\"wp-block-table\"><table><thead><tr><th>Campo<\/th><th>Tipo<\/th><th>Modo<\/th><th>Valor<\/th><\/tr><\/thead><tbody><tr><td>nombre<\/td><td>string<\/td><td>Expression<\/td><td><code>{{ $json.nombre }}<\/code><\/td><\/tr><tr><td>email<\/td><td>string<\/td><td>Expression<\/td><td><code>{{ typeof $json.email === &quot;string&quot; ? $json.email.trim().toLowerCase() : &quot;&quot; }}<\/code><\/td><\/tr><tr><td>estado<\/td><td>string<\/td><td>Expression<\/td><td><code>{{ typeof $json.email === &quot;string&quot; &amp;&amp; $json.email.trim().length &gt; 0 ? &quot;listo&quot; : &quot;revisar_email&quot; }}<\/code><\/td><\/tr><\/tbody><\/table><\/figure><p>Las comillas de los valores de texto de la tabla indican que son cadenas: no las escribas en el campo Fixed. Conserva los espacios cuando formen parte de los datos de prueba.<\/p><h3>Conecta los nodos y revisa el recorrido<\/h3><ul><li>Ejecutar prueba \u2192 Entrada sin email.<\/li><li>Entrada sin email \u2192 Revisar email.<\/li><\/ul><p>Ejecuta desde el inicio y abre la salida de cada nodo. Comprueba los valores y el n\u00famero de elementos antes de seguir. Un nodo verde indica ejecuci\u00f3n completada, pero debes comparar su salida con los resultados esperados de esta gu\u00eda.<\/p><\/section><p class=\"wp-block-paragraph\"><strong>Autor:<\/strong> Javier Fern\u00e1ndez, estudiante. Conoce c\u00f3mo documento las pr\u00e1cticas en <a href=\"https:\/\/n8nfacil.com\/sobre\/\">Sobre n8nf\u00e1cil<\/a> o <a href=\"https:\/\/n8nfacil.com\/contacto\/\">comunica un error<\/a> indicando el paso y la versi\u00f3n.<\/p>","protected":false},"excerpt":{"rendered":"<p>Reproduce un error por un campo ausente en n8n, localiza la causa y prueba la correcci\u00f3n. Dos workflows descargables y capturas reales.<\/p>","protected":false},"author":1,"featured_media":271,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-287","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mantenimiento-errores"],"_links":{"self":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/comments?post=287"}],"version-history":[{"count":4,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/287\/revisions"}],"predecessor-version":[{"id":311,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/287\/revisions\/311"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/media\/271"}],"wp:attachment":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/media?parent=287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/categories?post=287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/tags?post=287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}