Node.js adalah program yang menjalankan JavaScript di luar browser: di laptopmu, di terminal, dan di server. Bayangin kamu bisa bahasa Indonesia. Di sekolah kamu menulis di papan tulis, di kantor kamu menelepon dan membuka lemari arsip. Bahasanya sama, alat di sekitarmu yang beda. JavaScript juga begitu: di browser dia bisa mengubah halaman, di Node.js dia bisa membaca file di disk dan menjawab request dari internet.
🧪 Tebakan cepat:
console.log(typeof process);dijalankan di Node.js, lalu di browser. Hasilnya sama? Tebak dulu, jawabannya ada di bagian "Bahasanya sama, alatnya beda".
Runtime: yang menjalankan kodemu
Kode JavaScript gak bisa jalan sendiri. Dia butuh runtime: program yang membaca kodemu, menjalankannya, dan menyediakan alat bawaan. Browser adalah runtime. Node.js juga runtime.
Di dalam keduanya ada engine, mesin yang benar-benar menjalankan JavaScript. Node.js memakai V8, engine buatan Google untuk browser Chrome. Ryan Dahl membuat Node.js tahun 2009 dengan mengambil V8 dari Chrome, lalu menambahkan alat untuk file, jaringan, dan proses. Jadi Node.js bukan bahasa baru dan bukan framework: dia tempat JavaScript jalan.
Bahasanya sama, alatnya beda
if, for, function, array, object: semuanya sama persis. Yang beda adalah object dan modul bawaan yang tersedia.
| Browser | Node.js | |
|---|---|---|
| Halaman web | document, window |
gak ada |
| Info program yang jalan | gak ada | process |
| Baca dan tulis file | gak bisa | modul fs |
| Bikin server | gak bisa | modul http |
fetch() |
ada | ada (sejak Node 18) |
process adalah object bawaan Node yang berisi info tentang program yang sedang jalan: versi Node, folder kerja, argumen dari terminal. Di Node, typeof process hasilnya "object". Browser gak punya process, jadi di browser hasilnya "undefined". Hasilnya beda. Itu jawaban tebakannya.
Kebalikannya juga berlaku: Node gak punya document, karena di terminal gak ada halaman yang bisa diubah.
File pertamamu: node app.js
Pasang Node.js versi LTS dari nodejs.org. LTS (Long Term Support) adalah versi bernomor genap yang dirawat bertahun-tahun, misalnya 22 dan 24. Lalu, di terminal:
node --version
# v24.18.0
mkdir catatan-api
cd catatan-api
npm init -y
npm ikut terpasang bersama Node. npm init -y membuat package.json, kartu identitas proyekmu: nama, versi, dan script. -y artinya jawab "ya" untuk semua pertanyaan. Sepanjang track ini kita membangun proyek ini jadi API catatan kecil.
Buat file app.js:
console.log("Hello dari Node.js!");
console.log(process.version);
Jalankan dengan node diikuti nama file-nya:
node app.js
Hello dari Node.js!
v24.18.0
console.log(...)di Node mencetak ke terminal, bukan ke DevTools.process.versionberisi versi Node yang menjalankan file ini, sebagai teks yang diawaliv. Di laptopmu angkanya sesuai versi yang terpasang. Simulator di halaman latihan menjawabv24.18.0, rilis Node 24 LTS.
Kalau kodenya butuh alat browser
Tambahkan baris console.log(document.title); di baris 3, lalu jalankan lagi:
Hello dari Node.js!
v24.18.0
/home/budi/catatan-api/app.js:3
console.log(document.title);
^
ReferenceError: document is not defined
at Object.<anonymous> (/home/budi/catatan-api/app.js:3:13)
...
Node.js v24.18.0
Baca dari atas: file dan nomor baris, baris yang bermasalah, tanda ^ di kata yang salah, lalu nama error dan pesannya. document is not defined artinya nama document gak ada di runtime ini. Dua baris sebelumnya sudah tercetak, dan program berhenti di baris yang error.
Node.js dipakai buat apa
- Backend dan API: server yang menjawab request, seperti API catatan yang akan kita bangun.
- Alat di terminal: npm sendiri, dan Vite yang menjalankan proyek React-mu, adalah program JavaScript yang jalan di Node.
- Aplikasi real-time: chat dan notifikasi, karena Node bisa melayani banyak koneksi yang sedang menunggu tanpa ikut menunggu.
⚠️ Jebakan yang sering ketemu
- Memakai alat browser di Node.
document,window,alert, danlocalStoragegak ada di Node. HasilnyaReferenceError: ... is not defined. - Mengetik
node app.jsdi dalam Node. Kalau kamu mengetiknodesaja, kamu masuk ke REPL dengan tanda>, tempat mengetik JavaScript langsung. Di situnode app.jsjadiUncaught SyntaxError: Unexpected identifier 'app'. Keluar dengan.exit, lalu jalankan dari terminal biasa. - Salah folder.
node app.jsmencari file di folder tempat kamu berdiri. Dari folder lain hasilnyaError: Cannot find module '/home/budi/app.js'. Pindah dulu dengancd catatan-api. - Memakai versi ganjil. Versi 23 atau 25 cuma dirawat beberapa bulan. Untuk belajar dan production, pakai LTS.
TL;DR: Node.js adalah runtime yang menjalankan JavaScript di luar browser, memakai engine V8 dari Google Chrome. Bahasanya sama, alatnya beda: Node punya process, fs, dan http, tapi gak punya document atau window, jadi typeof process di Node hasilnya "object" dan di browser "undefined". Pasang versi LTS (22 atau 24), buat proyek dengan npm init -y (membuat package.json), lalu jalankan file dengan node app.js. process.version mencetak versi Node yang sedang jalan.