مشکل رایج در نود کد#
در اینجا برخی از خطاها و مشکلات رایج در نود کد و مراحلی برای رفع یا دیباگ آنها آورده شده است.
کد موارد را به درستی بر نمیگرداند#
وقتی این خطا ظاهر میشود که کد درون نود کد شما دادهای را در قالب مورد انتظار بر نمیگرداند.
در 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
متغیرهای محیطی را تنظیم کنید تا وارد کردن ماژولها مجاز باشد.
استفاده از متغیرهای سراسری#
گاهی ممکن است بخواهید دادههای سراسری سادهای را که مربوط به یک ورکفلو هستند، در طول و بین اجرای آن ذخیره و بازیابی کنید. برای مثال، ممکن است بخواهید تاریخ گزارش قبلی را هنگام تدوین گزارشی با لیستی از بهروزرسانیهای پروژه بیاورید.
برای تنظیم، بهروزرسانی و بازیابی دادهها مستقیماً در یک ورکفلو، از توابع دادههای استاتیک در کد خود استفاده کنید. میتوانید دادهها را چه بهصورت سراسری و چه مرتبط با نودهای خاص، مدیریت کنید.
/// راهنما | در صورت امکان، از حذف تکراریها استفاده کنید اگر تمایل دارید از متغیرها برای جلوگیری از پردازش موارد داده تکراری بیشتر از یک بار، استفاده کنید، به جای آن از نود حذف تکراریها بهره ببرید. این نود میتواند اطلاعات را در طول اجرایها حفظ کند تا از پردازش آیتمهای همانند، جلوگیری کند. ///