lifelong learner — urip iku urup, currently working on accenture.

Melakukan import komponen module utama nodejs / nodejs core system

0
Degananda.com -

Nodejs memiliki banyak sekali modul-modul utama atau dapat juga disebut dengan core module yang dapat dimanfaatkan oleh developer dalam membangun solusi digital / IT. Core module ini mencakup berbagai jenis fungsionalitas mulai dari modul untuk mengelola file system (folder, file, dan lain sebagainnya) hingga modul untuk membangun web server untuk mengelola request dari berbagai jenis protol (tcp ip/udp/dan lain sebagainnya).

Kompatibilitas Nodejs Core Module

Sebelum melakukan import nodejs core ada satu hal yang perlu dipertimbangkan yakni kompatibilitas core module dengan versi nodejs yang terinstall pada local machine. Setiap versi nodejs memiliki jenis core module yang disupport.  Contohnya pada nodejs versi 12 terdapat modul bernama “report”. Modul ini memiliki fungsi untuk menampilkan detail event yang sedang atau telah berjalan pada nodejs.

Modul reporting pada nodejs versi 12.

Beberapa contoh informasi yang dapat dikeluarkan oleh modul report ini adalah :

  • componentVersion – menampilkan informasi terkait komponen – komponen yang digunakan  pada aplikasi tersebut. Mulai dari versi nodejs hingga versi masing-masing komponen(core module maupun external/3rd party library) yang digunakan.
        "componentVersions": {
          "node": "12.0.0-pre",
          "v8": "7.1.302.28-node.5",
          "uv": "1.24.1",
          "zlib": "1.2.11",
          "ares": "1.15.0",
          "modules": "68",
          "nghttp2": "1.34.0",
          "napi": "3",
          "llhttp": "1.0.1",
          "http_parser": "2.8.0",
          "openssl": "1.1.0j"
        },
    
  • javascriptHeap – menampilkan jumlah memory yang digunakan pada saat memproses event tersebut mulai dari totalMemoryAvailable, totalMemoryUsed, totalMemoryFree.
     "javascriptHeap": {
        "totalMemory": 6127616,
        "totalCommittedMemory": 4357352,
        "usedMemory": 3221136,
        "availableMemory": 1521370240,
        "memoryLimit": 1526909922,
        "heapSpaces": {
          "read_only_space": {
            "memorySize": 524288,
            "committedMemory": 39208,
            "capacity": 515584,
            "used": 30504,
            "available": 485080
          },
          "new_space": {
            "memorySize": 2097152,
            "committedMemory": 2019312,
            "capacity": 1031168,
            "used": 985496,
            "available": 45672
          },
          "old_space": {
            "memorySize": 2273280,
            "committedMemory": 1769008,
            "capacity": 1974640,
            "used": 1725488,
            "available": 249152
          },
          "code_space": {
            "memorySize": 696320,
            "committedMemory": 184896,
            "capacity": 152128,
            "used": 152128,
            "available": 0
          },
          "map_space": {
            "memorySize": 536576,
            "committedMemory": 344928,
            "capacity": 327520,
            "used": 327520,
            "available": 0
          },
          "large_object_space": {
            "memorySize": 0,
            "committedMemory": 0,
            "capacity": 1520590336,
            "used": 0,
            "available": 1520590336
          },
          "new_large_object_space": {
            "memorySize": 0,
            "committedMemory": 0,
            "capacity": 0,
            "used": 0,
            "available": 0
          }
        }
      },
    
  • javascriptStack – menampilkan error stack yang biasannya dapat ditampilkan melalui console.log saat ini dapat diakses berupa array yang lebih teratur.
      "javascriptStack": {
        "message": "Error: *** test-exception.js: throwing uncaught Error",
        "stack": [
          "at myException (/home/nodeuser/project/node/test/report/test-exception.js:9:11)",
          "at Object.<anonymous> (/home/nodeuser/project/node/test/report/test-exception.js:12:3)",
          "at Module._compile (internal/modules/cjs/loader.js:718:30)",
          "at Object.Module._extensions..js (internal/modules/cjs/loader.js:729:10)",
          "at Module.load (internal/modules/cjs/loader.js:617:32)",
          "at tryModuleLoad (internal/modules/cjs/loader.js:560:12)",
          "at Function.Module._load (internal/modules/cjs/loader.js:552:3)",
          "at Function.Module.runMain (internal/modules/cjs/loader.js:771:12)",
          "at executeUserCode (internal/bootstrap/node.js:332:15)"
        ]
      },
    

untuk detail lebih lanjut terkait modul reporting yang tersedia untuk nodejs versi 12 ini dapat langsung mengunjungi link berikut ini (halaman dokumentasi official nodejs api versi 12)

https://nodejs.org/api/report.html

Sehingga, sebelum menggunakan core module nodejs yang perlu di lakukan adalah melakukan cross check versi nodejs yang terinstall pada local machine dengan menggunakan perintah dibawah ini (jalankan pada terminal atau microsoft power shell).

node -v

sebagai contoh, versi nodejs yang terinstall adalah versi 10 seperti tertera pada gambar dibawah ini

node-version.png

Berdasarkan versi nodejs, maka node module yang dapat di import ke project hanyalah modul-modul core nodejs yang kompatibel dengan versi 10. Gunakan tabel dibawah ini sebagai referensi nodejs module documentation berdasarkan versi nodejs yang terinstall pada local machine.

*versi 8 hingga versi 12

No Versi Node JS Available Core Module Documentation
1 8 https://nodejs.org/docs/latest-v8.x/api/
2 9 https://nodejs.org/docs/latest-v9.x/api/
3 10 https://nodejs.org/docs/latest-v11.x/api/
4 11 https://nodejs.org/docs/latest-v10.x/api/
5 12 https://nodejs.org/dist/latest-v12.x/docs/api/

untuk versi sebelumnya (sebelum 8.x) dapat ditemukan pada link dibawah ini dan refer pada api reference documentation section

https://nodejs.org/en/docs/

Import nodejs core module pada project

untuk melakukan import nodejs core module(bisa juga disebut sebagai built-in module) perintah yang digunakan adalah require(). Parameter yang diberikan didalam fungsi require ini yakni nama dari module tersebut sesuai dengan dokumentasi yang terdapat pada halaman resmi nodejs.

Import module dengan javascript syntax.

Penulisan require seperti dibawah ini adalah style penulisan javascript pada umumnya. Modul yang akan di import adalah file-system. Modul ini telah tersedia pada nodejs versi 10 (versi yang sama seperti nodejs yang terinstall pada local machine).

API ini memungkinkan aplikasi untuk berinteraksi dengan file system pada local machine dengan menggunakan POSIX (standar operasi file-system yang digunakan IEEE) function

const fsMod = require('fs');

untuk mengetahui fungsi-fungsi yang tersedia pada object fs diatas , cukup tuliskan nama constant yang digunakan untuk melakukan import module fs tersebut dan tambahkan titik (dot / “.”) seperti terlihat pada gambar dibawah ini (editor yang digunakan adalah microsoft visual studio code).

fs-allavailablefunction.jpg

jika ingin tahu apa saja parameter yang dibutuhkan pada masing-masing fungsi cukup hover mouse ke salah satu fungsi tersebut dan klik tombol (“i”) maka penjelasan singkat terkait parameter yang dibutuhkan pada fungsi tersebut akan muncul pada layar sesuai dengan gambar dbawah ini.

fs-readline.jpg

Membaca isi dari file txt dengan menggunakan core module fs (file system)

Aplikasi yang akan dibuat adalah untuk membaca isi dari file secara asynchronously. Untuk mencapai tujuan tersebut maka langkah pertama adalah menuliskan baris kode yang berguna dalam membaca isi file.

const fsMod = require('fs');
fsMod.readFile('./document/myFile.txt', (err, data) => {
    if(err){
        throw(err);
    } else {
        console.log(data);
    }
})

baris kode diatas jika dijalankan hanya akan menghasilkan buffer dari file tersebut (myFile.txt). Untuk dapat menkonversi buffer menjadi karakter yang terbaca oleh manusia (encoding utf8). Perlu di ingat bahwa callback veriable “data” ini merupakan sebuah buffer. Sehingga terdapat berbagai fungsi melekat pada object buffer tersebut. Seperti gambar dibawah ini

fs-buffer-to-string.jpg

Untuk mengkonversi buffer tersebut menjadi string UTF-8 adalah melalui fungsi toString(). Sehingga baris kodenya menjadi seperti ini

const fsMod = require('fs');
fsMod.readFile('./document/myFile.txt', (err, data) => {
    if(err){
        throw(err);
    } else {
        console.log(data.toString());
    }
})

jika kode diatas dijalankan maka akan menampilkan isi dari file myFile.txt.

run-fs-readfile-buffer-string.jpg

LEAVE A REPLY