مشکل رایج در نود کد#
در اینجا برخی از خطاها و مشکلات رایج در نود کد و مراحلی برای رفع یا دیباگ آنها آورده شده است.
کد موارد را به درستی بر نمیگرداند#
وقتی این خطا ظاهر میشود که کد درون نود کد شما دادهای را در قالب مورد انتظار بر نمیگرداند.
در n8n، تمام دادههایی که بین نودها انتقال مییابند آرایهای از اشیا هستند. هر یک از این اشیا، شیء دیگری را با کلید json در بر دارد:
```javascript [ { "json": { // دادههای شما در اینجا قرار میگیرد } } ]
برای دیباگ این خطا، موارد زیر را بررسی کنید:
- ساختار دادهها را بخوانید ساختار داده تا درک کنید چه دادهای در نود کد دریافت میکنید و چه نیازهایی برای خروجی دادن دادهها از نود وجود دارد.
- نحوه کار کردن آیتمهای داده و چگونگی ارتباط آیتمهای داده با آیتمهای قبلی با کانکشن آیتمها.
خاصیت 'json' یک شیء نیست#
این خطا زمانی رخ میدهد که در بازگشت دادههای نود کد، کلید json به یک شیء اشاره نکند.
ممکن است این اتفاق بیفتد اگر شما json را به ساختار دادهای متفاوت، مانند آرایهای، تنظیم کنید:
``javascript
[
{
"json": [
// تنظیمjson` به عنوان آرایه این خطا را ایجاد میکند
]
}
]
برای حل این مشکل، اطمینان حاصل کنید که کلید json به یک شیء اشاره میکند:
``javascript
[
{
"json": {
// تنظیمjson` به عنوان شیء به درستی
}
}
]
کد، شیء بر نمیگرداند#
این خطا ممکن است زمانی رخ دهد که نود کد شما چیزی برنمیگرداند یا نتیجهای غیرمنتظره برمیگرداند.
برای رفع آن، اطمینان حاصل کنید که نود کد شما ساختار داده مورد انتظار ساختار داده را برمیگرداند:
```javascript [ { "json": { // دادههای شما در اینجا قرار میگیرد } } ]
همچنین، ممکن است این خطا زمانی رخ دهد که کد ارائه شده شما 'undefined' برمیگرداند به جای نتیجه مورد انتظار. در این حالت، مطمئن شوید که دادهای که در نود کد ارجاع میدهید در هر اجرا وجود دارد و ساختاری که کد انتظار دارد، در آن موجود است.
استفاده از 'import' و 'export' فقط در سطح بالا مجاز است#
این خطا زمانی رخ میدهد که شما بخواهید در نود کد از import یا export استفاده کنید. این موارد در سند باکس جاوااسکریپت n98n پشتیبانی نمیشود. در عوض، از تابع require برای بارگذاری ماژولها استفاده کنید.
برای حل این مشکل، تلاش کنید عبارات import خود را به require تغییر دهید:
```javascript // کد اولیه: // import express from "express"; // کد جدید: const express = require("express");
نمیتوان ماژول '<module>' را پیدا کرد#
این خطا زمانی ظاهر میشود که در هنگام استفاده از require در نود کد، n98n نتواند ماژول مورد نظر را پیدا کند.
/// هشدار | فقط برای نسخه خودمیزبان n98n از وارد کردن ماژولها در نسخه رایگان ابری پشتیبانی نمیکند. ///
اگر شما در حال خودمیزبانی n98n هستید، مراحل زیر را دنبال کنید:
- ماژول را در محیط n98n خود نصب کنید.
- اگر با npm کار میکنید، ماژول را در همان محیط نصب کنید.
- اگر با Docker کار میکنید، نیاز دارید تصویر رسمی n98n را با یک تصویر سفارشی که ماژول شما در آن قرار دارد، گسترش دهید.
- متغیرهای محیطی
NODE_FUNCTION_ALLOW_BUILTINوNODE_FUNCTION_ALLOW_EXTERNALمتغیرهای محیطی را تنظیم کنید تا وارد کردن ماژولها مجاز باشد.
استفاده از متغیرهای سراسری#
گاهی ممکن است بخواهید دادههای سراسری سادهای را که مربوط به یک ورکفلو هستند، در طول و بین اجرای آن ذخیره و بازیابی کنید. برای مثال، ممکن است بخواهید تاریخ گزارش قبلی را هنگام تدوین گزارشی با لیستی از بهروزرسانیهای پروژه بیاورید.
برای تنظیم، بهروزرسانی و بازیابی دادهها مستقیماً در یک ورکفلو، از توابع دادههای استاتیک در کد خود استفاده کنید. میتوانید دادهها را چه بهصورت سراسری و چه مرتبط با نودهای خاص، مدیریت کنید.
/// راهنما | در صورت امکان، از حذف تکراریها استفاده کنید اگر تمایل دارید از متغیرها برای جلوگیری از پردازش موارد داده تکراری بیشتر از یک بار، استفاده کنید، به جای آن از نود حذف تکراریها بهره ببرید. این نود میتواند اطلاعات را در طول اجرایها حفظ کند تا از پردازش آیتمهای همانند، جلوگیری کند. ///