قيمة غير محددة في عقدة حقول التحرير

مرحبا،

في سير عمل ما، أقوم بتخزين القيم في عقدة “تحرير الحقول” في بداية التنفيذ. يعمل بقية سير العمل لمدة دقيقتين تقريبا، وفي النهاية، أسترجع إحدى القيم من تلك العقدة “تحرير الحقول”. المشكلة هي أنني أتلقى رسالة “غير معرّف” للحقل — كما لو أن القيمة المخزنة لها عمر افتراضي محدود.

معلومات حول إعداد n8n الخاص بك

  • إصدار n8n: 2.29.9
  • قاعدة البيانات (الافتراضي: SQLite):
  • إعداد n8n EXECUTIONS_PROCESS (الافتراضي: own, main):
  • تشغيل n8n عبر (Docker, npm, n8n cloud, desktop app): Docker
  • نظام التشغيل: Linux Fedora

مرحبا! القيم لا تنتهي صلاحيتها في n8n، لذا هذا ليس هو المشكلة.

المشكلة الحقيقية أنك ربما تفقد المرجع عبر الفروع أو بعد الدمج. جرّب تغيير تعبيرك إلى:

{{ $('Edit Fields').first().json.yourField }}

.first() يفرض على n8n أن يأخذ دائماً من المخرجات الأصلية بغض النظر عن مكانك في سير العمل. هذا يصلحها في معظم الحالات!

مرحباً @flipflip
إذا كانت عقدة الانتظار توقف التشغيل لمدة دقيقتين، فهذا ينتج القيمة غير المعرّفة: n8n تحفظ التنفيذ عند وصولها إلى الانتظار وتعيد تحميله عند الاستئناف، لذا فإن المرجعية العكسية مثل $('Edit Fields').item إلى عقدة قبل الانتظار لا تستمر بشكل موثوق بعد إعادة التحميل. تمرر عقدة الانتظار مدخلاتها مباشرة، لذا احمل الحقل على العنصر بدلاً من الوصول إلى ما وراء الانتظار. قم بتفعيل Include Other Input Fields في عقدة Edit Fields حتى تنتقل القيمة مع العناصر إلى عقدة الانتظار، ثم اقرأها بعد الانتظار باستخدام:

{{ $json.yourField }}

مرحبا، شكرا على ردك.

إليك نسخة مبسطة من سير العمل الخاص بي. يتم إنشاء مثيل من عقدة “setVar” في البداية بدون أخطاء. يعمل سير العمل بسلاسة، وفقط عند العقدة الأخيرة أحتاج إلى قيمة “mail” المحددة في “setVar”. يتم تضمين العقدتين السابقتين “setVar” لأغراض توضيحية فقط.

الخطأ

Problem in node 'Send an Email'

No recipients defined
{
  "nodes": [
    {
      "parameters": {
        "fromEmail": "sender@mydomain",
        "toEmail": "={{ $('setVar').first().item.json.mail }}",
        "subject": "Subject",
        "html": "={{ $json.html }}",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        -656,
        16
      ],
      "id": "f053b99c-d232-407b-91fc-2b1749ef66bf",
      "name": "Send an Email",
      "webhookId": "92fbf1a7-3faf-414e-8204-1043de1496e7",
      "credentials": {
        "smtp": {
          "id": "SoaEmU7pgWAipLFL",
          "name": "smtp"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "2b7df394-0865-4dea-b1cd-c8f2d569c363",
              "name": "data",
              "value": "={{ $('Get chat message').item.json.body.content.replace(/(
<([^
>]+)
>)/ig, \"\") }}",
              "type": "string"
            },
            {
              "id": "78fc7e77-81bb-41ca-8ad4-2628742d0798",
              "name": "mail",
              "value": "={{ $json.mail }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -2016,
        16
      ],
      "id": "c3b0fd23-7645-4784-83aa-47515995e241",
      "name": "setVar"
    },
    {
      "parameters": {
        "content": "ربط وكلاء n8n AI متعددين بدون خطوات انتظار.",
        "height": 256,
        "width": 1024
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1776,
        -64
      ],
      "typeVersion": 1,
      "id": "f26fcd45-7595-4258-853b-8aac622430e3",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.4,
      "position": [
        -2464,
        16
      ],
      "id": "06ac703e-eb18-4818-a714-d381b00916b4",
      "name": "When chat message received",
      "webhookId": "1b1b9d28-77b3-4190-8ae1-faa56960f1ed"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        -2240,
        16
      ],
      "id": "cf6462ed-1f60-4717-b516-07842e6dfb2a",
      "name": "getMail"
    },
    {
      "parameters": {
        "content": "يستغرق هذا الجزء أقل قليلاً من دقيقتين للتنفيذ. يتم جمع البيانات مسبقاً لتغذية عقدة \"setVar\".",
        "height": 384,
        "width": 1600,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2048,
        -128
      ],
      "typeVersion": 1,
      "id": "423819c8-db3e-4d73-bca5-2c48e1300d12",
      "name": "Sticky Note1"
    }
  ],
  "connections": {
    "setVar": {
      "main": [
        [
          {
            "node": "Send an Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "getMail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "getMail": {
      "main": [
        [
          {
            "node": "setVar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "3692996d2c89e949777729662d6d3beae0269613695efc42c83cca2a1b55c270"
  }
}

مرحباً @flipflip
في عقدة Send an Email لديك {{ $('setVar').first().item.json.mail }}. .first() يُرجع العنصر بالفعل، لذا فإن ربط .item عليه يُحل إلى undefined، وينتهي الحال بـ toEmail فارغاً وتُبلّغ العقدة عن “No recipients defined”. احذف .item:

{{ $('setVar').first().json.mail }}

إذا ظل يعود فارغاً، فالعنوان لم يصل أبداً إلى setVar: تعيين mail الخاص به يقرأ {{ $json.mail }} من getMail، لذا افتح output الخاص بـ setVar وتأكد من أن الحقل يحتفظ بالعنوان هناك.

شكراً، ممتاز.