Dokumen ini diterjemahkan oleh AI. Untuk informasi yang akurat, silakan merujuk ke versi bahasa Inggris.
Node skrip JavaScript memungkinkan pengguna untuk mengeksekusi skrip JavaScript sisi server kustom dalam alur kerja. Skrip dapat menggunakan variabel dari hulu alur kerja sebagai parameter, dan nilai kembalian skrip dapat disediakan untuk digunakan oleh node hilir.
Skrip akan dijalankan dalam sebuah worker thread di sisi server aplikasi NocoBase, dan mendukung sebagian besar fitur Node.js, namun masih terdapat beberapa perbedaan dengan lingkungan eksekusi asli, lihat Daftar Fitur untuk detailnya.
Di antarmuka konfigurasi alur kerja, klik tombol plus ("+") dalam alur untuk menambahkan node "JavaScript":


Digunakan untuk meneruskan variabel konteks alur kerja atau nilai statis ke dalam skrip untuk digunakan oleh logika kode dalam skrip. Di mana name adalah nama parameter, yang akan menjadi nama variabel setelah diteruskan ke skrip. value adalah nilai parameter, dapat memilih variabel atau memasukkan konstanta.
Konten skrip dapat dianggap sebagai sebuah fungsi, Anda dapat menulis kode JavaScript apa pun yang didukung dalam lingkungan Node.js, dan dapat menggunakan pernyataan return untuk mengembalikan sebuah nilai sebagai hasil eksekusi node, untuk digunakan sebagai variabel oleh node berikutnya.
Setelah menulis kode, Anda dapat mengklik tombol pengujian di bawah kotak edit untuk membuka dialog eksekusi pengujian, dan mengisi parameter dengan nilai statis untuk melakukan simulasi eksekusi. Setelah eksekusi, Anda dapat melihat nilai kembalian dan konten keluaran (log) di dalam dialog tersebut.

Satuan dihitung dalam milidetik, ketika diatur ke 0 berarti tidak ada batas waktu yang ditetapkan.
Setelah dicentang, node berikutnya akan tetap dieksekusi meskipun skrip mengalami kesalahan atau kesalahan batas waktu.
Setelah skrip mengalami kesalahan, tidak akan ada nilai kembalian, dan hasil node akan diisi dengan pesan kesalahan. Jika node berikutnya menggunakan variabel hasil dari node skrip, harap menanganinya dengan hati-hati.
Sama dengan versi Node.js yang menjalankan aplikasi utama.
Modul dapat digunakan secara terbatas dalam skrip, konsisten dengan CommonJS, menggunakan instruksi require() dalam kode untuk mengimpor modul.
Mendukung modul asli Node.js, dan modul yang telah terinstal di node_modules (termasuk paket dependensi yang telah digunakan oleh NocoBase). Modul yang akan disediakan untuk digunakan dalam kode harus dideklarasikan dalam variabel lingkungan aplikasi WORKFLOW_SCRIPT_MODULES, dengan beberapa nama paket dipisahkan oleh koma, misalnya:
Modul yang tidak dideklarasikan dalam variabel lingkungan WORKFLOW_SCRIPT_MODULES, meskipun merupakan modul asli Node.js atau telah terinstal di node_modules, tidak dapat digunakan dalam skrip. Strategi ini dapat digunakan untuk mengontrol daftar modul yang dapat digunakan pengguna pada lapisan operasional, guna menghindari izin skrip yang terlalu tinggi dalam beberapa skenario.
Dalam lingkungan penyebaran non-kode sumber, jika modul tertentu tidak terinstal di node_modules, Anda dapat menginstal paket yang diperlukan secara manual ke direktori storage. Misalnya, saat perlu menggunakan paket exceljs, Anda dapat melakukan operasi berikut:
Kemudian tambahkan jalur relatif (atau absolut) paket tersebut berdasarkan CWD (direktori kerja saat ini) aplikasi ke variabel lingkungan WORKFLOW_SCRIPT_MODULES:
Maka paket exceljs dapat digunakan dalam skrip (nama require harus sama persis dengan yang didefinisikan dalam variabel lingkungan):
Tidak mendukung variabel global seperti global, process, __dirname, dan __filename.
Parameter yang dikonfigurasi dalam node akan berfungsi sebagai variabel global dalam skrip dan dapat digunakan secara langsung. Parameter yang diteruskan ke skrip hanya mendukung tipe dasar, seperti boolean, number, string, object, dan array. Objek Date akan dikonversi menjadi string berbasis format ISO setelah diteruskan. Tipe kompleks lainnya tidak dapat diteruskan secara langsung, seperti instans dari kelas kustom.
Melalui pernyataan return, data tipe dasar (mengikuti aturan parameter yang sama) dapat dikembalikan ke node sebagai hasil. Jika pernyataan return tidak dipanggil dalam kode, maka eksekusi node tidak akan memiliki nilai kembalian.
Mendukung penggunaan console untuk mengeluarkan log.
Saat alur kerja dijalankan, keluaran dari node skrip juga akan dicatat ke dalam berkas log alur kerja yang sesuai.
Mendukung penggunaan async untuk mendefinisikan fungsi asinkron, serta await untuk memanggil fungsi asinkron. Mendukung penggunaan objek global Promise.
Jika perlu menggunakan metode seperti setTimeout, setInterval, atau setImmediate, perlu diimpor melalui paket timers Node.js.