Node.js sudah menyediakan banyak module bawaan (built-in module) yang bisa langsung digunakan tanpa instalasi tambahan. Module ini dirancang untuk menangani kebutuhan dasar aplikasi backend, seperti membaca file, mengelola path, melihat informasi sistem, hingga membuat server.
Keuntungan menggunakan built-in module:
- tidak perlu install paket tambahan
- performa lebih stabil
- lebih aman dan teruji
Dalam bab ini, kita fokus pada empat module yang paling sering dipakai: fs, path, os, dan http.
Contents
Module fs (file system) digunakan untuk berinteraksi dengan file dan folder di sistem.
Membaca File (Asynchronous)
import { readFile } from "fs";
readFile("data.txt", "utf-8", (err, data) => {
if (err) {
console.error("Gagal membaca file");
return;
}
console.log(data);
});
Cara ini cocok untuk aplikasi server karena tidak memblokir proses lain.
Membaca File dengan Promise
Pendekatan modern menggunakan Promise:
import { readFile } from "fs/promises";
async function loadFile() {
const data = await readFile("data.txt", "utf-8");
console.log(data);
}
loadFile();
Pendekatan ini lebih rapi dan mudah dibaca.
import { writeFile } from "fs/promises";
async function saveFile() {
await writeFile("output.txt", "Hello Node.js");
}
saveFile();
Module fs sangat penting untuk:
- konfigurasi aplikasi
- logging
- upload file
Module path: Mengelola Path dengan Aman
Module path membantu mengelola path file agar tetap konsisten di berbagai sistem operasi.
Menggabungkan Path
import path from "path";
const filePath = path.join("src", "data", "file.txt");
console.log(filePath);
Tanpa path, penggabungan path manual sering menyebabkan bug, terutama di Windows.
Mendapatkan Nama File dan Folder
import path from "path";
const fileName = path.basename("/src/data/file.txt");
console.log(fileName);
Module ini sangat berguna saat bekerja dengan file upload dan struktur folder.
Module os: Informasi Sistem Operasi
Module os digunakan untuk mendapatkan informasi dasar tentang sistem tempat Node.js berjalan.
Contoh Informasi Sistem
import os from "os";
console.log(os.platform());
console.log(os.cpus().length);
console.log(os.totalmem());
Module ini sering digunakan untuk:
- monitoring sederhana
- debugging
- menentukan konfigurasi berdasarkan sistem
Module http: Membuat Server Tanpa Framework
Module http memungkinkan kita membuat server langsung tanpa Express atau framework lain.
Membuat Server HTTP Sederhana
import http from "http";
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello dari Node.js Server");
});
server.listen(3000, () => {
console.log("Server berjalan di http://localhost:3000");
});
Kode ini adalah fondasi dari semua framework Node.js.
Menangani URL Request
import http from "http";
const server = http.createServer((req, res) => {
if (req.url === "/") {
res.end("Halaman Utama");
} else if (req.url === "/about") {
res.end("Tentang Kami");
} else {
res.writeHead(404);
res.end("Halaman tidak ditemukan");
}
});
server.listen(3000);
Contoh ini menunjukkan bagaimana request diproses langsung oleh Node.js.
Menggabungkan Built-in Module dalam Satu Aplikasi
Contoh mini aplikasi:
import http from "http";
import { readFile } from "fs/promises";
import path from "path";
const server = http.createServer(async (req, res) => {
const filePath = path.join(process.cwd(), "message.txt");
const message = await readFile(filePath, "utf-8");
res.writeHead(200, { "Content-Type": "text/plain" });
res.end(message);
});
server.listen(3000);
Contoh ini menggabungkan:
httpuntuk serverfsuntuk membaca filepathuntuk mengelola path
Kesalahan Umum Saat Menggunakan Built-in Module
Beberapa kesalahan yang sering terjadi:
- menggunakan
fsversi sinkron di server - menggabungkan path secara manual
- lupa menangani error
Gunakan versi asynchronous dan selalu siapkan penanganan error.
Kesimpulan
Built-in module adalah kekuatan utama Node.js. Dengan memahami module seperti fs, path, os, dan http, kita bisa:
- membangun aplikasi backend tanpa banyak dependensi
- memahami cara kerja Node.js dari dasar
- menulis kode yang lebih efisien dan stabil
Bab ini menjadi jembatan penting sebelum masuk ke pembahasan framework seperti Express.