Ця документація була автоматично перекладена штучним інтелектом.
Вузол JavaScript Скрипт дозволяє користувачам виконувати власний серверний JavaScript скрипт у межах робочого процесу. Скрипт може використовувати змінні з попередніх етапів робочого процесу як параметри, а його повернене значення може бути використане наступними вузлами.
Скрипт виконується в робочому потоці на сервері застосунку NocoBase та підтримує більшість функцій Node.js, але існують деякі відмінності від нативного середовища виконання. Детальніше дивіться у Списку можливостей.
В інтерфейсі налаштування робочого процесу натисніть кнопку плюс («+») у потоці, щоб додати вузол «JavaScript»:


Використовується для передачі змінних або статичних значень з контексту робочого процесу в скрипт для використання в логіці коду. name — це ім'я параметра, яке стає ім'ям змінної після передачі в скрипт. value — це значення параметра, яке може бути змінною або константою.
Вміст скрипту можна розглядати як функцію. Ви можете написати будь-який JavaScript код, що підтримується середовищем Node.js, і використовувати оператор return для повернення значення як результату виконання вузла, яке потім може бути використане наступними вузлами як змінна.
Після написання коду ви можете натиснути кнопку тестування під редактором, щоб відкрити діалогове вікно для тестового виконання, де можна ввести статичні значення для параметрів і симулювати запуск. Після виконання ви побачите повернене значення та вміст виводу (журналу) у діалоговому вікні.

Одиниця виміру — мілісекунди. Значення 0 означає, що тайм-аут не встановлено.
Якщо позначено, наступні вузли все одно будуть виконуватися, навіть якщо скрипт зіткнеться з помилкою або перевищить час очікування.
Якщо скрипт завершиться з помилкою, він не матиме поверненого значення, а результат вузла буде заповнений повідомленням про помилку. Якщо наступні вузли використовують змінну результату з вузла скрипту, це слід обробляти з обережністю.
Збігається з версією Node.js, на якій працює основний застосунок.
Модулі можна використовувати в скрипті з обмеженнями, відповідно до CommonJS, застосовуючи директиву require() для імпорту модулів.
Підтримуються нативні модулі Node.js та модулі, встановлені в node_modules (включно з пакетами залежностей, які вже використовуються NocoBase). Модулі, які мають бути доступні для використання в коді, повинні бути оголошені в змінній середовища застосунку WORKFLOW_SCRIPT_MODULES, причому кілька імен пакетів розділяються комами, наприклад:
Модулі, не оголошені в змінній середовища WORKFLOW_SCRIPT_MODULES, не можуть бути використані в скрипті, навіть якщо вони є нативними для Node.js або вже встановлені в node_modules. Ця політика може бути використана на операційному рівні для контролю списку модулів, доступних користувачам, запобігаючи надмірним дозволам скриптів у деяких сценаріях.
У середовищі, де розгортання відбувається не з вихідного коду, якщо модуль не встановлено в node_modules, ви можете вручну встановити потрібний пакет у каталог storage. Наприклад, щоб використовувати пакет exceljs, виконайте такі дії:
Потім додайте відносний (або абсолютний) шлях до цього пакета, виходячи з поточного робочого каталогу (CWD) застосунку, до змінної середовища WORKFLOW_SCRIPT_MODULES:
Після цього ви зможете використовувати пакет exceljs у своєму скрипті:
Не підтримуються глобальні змінні, такі як global, process, __dirname та __filename.
Параметри, налаштовані у вузлі, стають глобальними змінними в скрипті та можуть використовуватися безпосередньо. Параметри, що передаються в скрипт, підтримують лише базові типи, такі як boolean, number, string, object та масиви. Об'єкт Date після передачі буде перетворено на рядок у форматі ISO. Інші складні типи, такі як екземпляри користувацьких класів, не можуть бути передані безпосередньо.
За допомогою оператора return можна повернути дані базових типів (за тими ж правилами, що й параметри) до вузла як його результат. Якщо оператор return не викликається в коді, виконання вузла не матиме поверненого значення.
Підтримується використання console для виведення журналів.
Під час виконання робочого процесу вивід вузла скрипту також записується до файлу журналу відповідного робочого процесу.
Підтримується використання async для визначення асинхронних функцій та await для їх виклику. Підтримується використання глобального об'єкта Promise.
Щоб використовувати такі методи, як setTimeout, setInterval або setImmediate, їх потрібно імпортувати з пакета timers Node.js.