IlmHamroh
JavaScript Full-stack/3-qism. Dasturchi asboblari va fikrlash13/21-dars14 daqiqa
Mundarija (34)

Node.js nima va uni o'rnatish: LTS, REPL va versiya menejeri

Qisqacha: Node.js — JavaScript kodini brauzerdan tashqarida, oddiy dastur kabi kompyuterda ishga tushiradigan muhit (runtime). Uning ichida Chrome'dagi V8 dvigateli bor, lekin sahifa o'rniga fayllar, tarmoq va operatsion tizim bilan ishlaydi. Har doim LTS versiyani o'rnating (2026-yil sentabr holatiga — Node 24). O'rnatilganini node -v tekshiradi, node fayl.js faylni bajaradi, versiyalarni esa fnm kabi menejer almashtiradi.

Bu darsda

  • Node.js nima ekanini va brauzerdagi JavaScript'dan farqini tushuntirasiz.
  • LTS va Current versiyalarining farqini bilasiz va to'g'risini tanlaysiz.
  • Node.js'ni o'rnatib, node -v va npm -v bilan tekshirasiz.
  • REPL'da JavaScript'ni sinab ko'rasiz va node fayl.js bilan birinchi faylingizni bajarasiz.
  • Versiya menejeri (fnm) va .nvmrc fayli nima uchun kerakligini tushuntirasiz.

Oldin bilishingiz kerak: Brauzer tuzilishi va dvigatellar, Muhit o'zgaruvchilari, PATH, Dastur o'rnatish va paket menejerlari, VS Code ichki terminali.

1. Nega bu kerak?

Brauzer darsida ko'rdik: har brauzerning ichida JavaScript dvigateli bor. Chrome'da u V8 deb ataladi. Siz sahifani ochasiz, dvigatel sahifadagi JavaScript kodini bajaradi. DevTools Console'ga 2 + 3 yozsangiz, 5 chiqaradi.

Lekin bu JavaScript brauzer "qafasi" ichida yashaydi. U sahifadagi tugmani o'zgartira oladi, lekin kompyuteringizdagi faylni o'qiy olmaydi. Xavfsizlik uchun shunday bo'lishi to'g'ri: har ochgan saytingiz diskingizni titkilashini xohlamaysiz.

Endi tasavvur qiling: JavaScript bilan fayllarni tartiblaydigan skript yozmoqchisiz. Yoki Telegram bot. Yoki sayt uchun server — so'rovlarni qabul qilib javob beradigan dastur (client–server darsi). Buning uchun JavaScript brauzerdan tashqarida, oddiy dastur kabi ishlashi kerak.

2009-yilda Ryan Dahl (Rayan Dal) shu muammoni hal qildi. U Chrome'ning V8 dvigatelini brauzerdan "sug'urib olib", fayl, tarmoq va operatsion tizim bilan ishlash imkoniyatlarini qo'shdi. Natija — Node.js. Bugun u millionlab serverlarda ishlaydi, va bu kursda ishlatadigan deyarli hamma vosita (npm, Vite, React asboblari) Node.js ustida turadi.

2. Node.js nima?

2.1 Til emas, muhit

Node.js — JavaScript kodini brauzerdan tashqarida bajaradigan runtime (ish muhiti). Runtime — kodni ishga tushiradigan dastur va unga beriladigan imkoniyatlar to'plami.

O'xshatish: JavaScript — til, xuddi o'zbek tili kabi. Brauzer va Node.js — ikki xil "ish joyi". Maktabda o'qituvchi o'zbekcha dars beradi, bozorda sotuvchi o'zbekcha savdo qiladi. Til bir xil, lekin qo'lidagi asboblar har xil: birida doska va bo'r, ikkinchisida tarozi va kassa.

Node.js yangi dasturlash tili emas. Unda ham 2 + 3 — 5, ham console.log — ekranga chiqarish. Farq — atrofdagi imkoniyatlarda.

2.2 Bir dvigatel, ikki xil imkoniyat

Dasturning boshqa dasturga beradigan imkoniyatlar to'plami API (Application Programming Interface — dasturlar bir-biri bilan gaplashadigan "eshik") deyiladi. Brauzer ham, Node.js ham V8'ga o'z API'larini qo'shadi:

flowchart TB
  subgraph B["Brauzer"]
    V1["V8: JavaScript tili"]
    W["Sahifa: document, tugmalar,<br/>alert, localStorage"]
  end
  subgraph N["Node.js"]
    V2["V8: JavaScript tili"]
    O["Tizim: fayllar, tarmoq,<br/>jarayonlar, process"]
  end
Brauzerda Node.js'da
Dvigatel V8 (Chrome'da) V8
Sahifa (document, window) Bor Yo'q
Fayllarni o'qish-yozish Yo'q Bor
Server yaratish Yo'q Bor
Qayerda ishlaydi Foydalanuvchi brauzerida Kompyuter yoki serverda

Eng muhim xulosa: Node.js'da sahifa yo'q. Unda document ham, tugma ham, alert ham yo'q. Buning o'rniga fayllar va tarmoq bor.

Tekshirib ko'ring: Node.js — dasturlash tilimi? Nega?

Javob

Yo'q. Til — JavaScript. Node.js — shu tilni brauzerdan tashqarida bajaradigan muhit (runtime). Brauzer ham JavaScript'ni bajaradi, lekin boshqa imkoniyatlar bilan. Til bir xil, muhit har xil.

3. Qaysi versiya: LTS va Current

3.1 Ikki xil versiya

Node.js'ning yangi katta versiyalari muntazam chiqadi va har biri raqam bilan ataladi: 22, 24, 26. Har versiya ikki bosqichdan o'tadi:

Bosqich Nima degani Kimga
Current (joriy) Eng yangi imkoniyatlar, hali "sinovda" Yangilikni sinaydiganlarga
LTS (Long Term Support — uzoq muddatli qo'llab-quvvatlash) Barqaror, 2,5 yil davomida xatolari tuzatiladi Hammaga: o'qish va real ish

Oddiy qoida: doim LTS'ni o'rnating. Kompaniyalar serverlarda faqat LTS ishlatadi. O'qish uchun ham barqaror versiya kerak — kutilmagan xato bilan vaqt yo'qotmaslik uchun.

3.2 2026-yil holati

Hozirgacha (Node 26 gacha) qoida shunday edi: har yili ikkita versiya chiqadi. Juft raqamlilari (20, 22, 24, 26) oktabrda LTS bo'ladi, toq raqamlilari (21, 23, 25) hech qachon LTS bo'lmaydi.

2026-yil sentabr holatiga:

Versiya Holati
Node 20 Muddati tugagan (2026-yil aprel) — ishlatmang
Node 22 Faqat xavfsizlik tuzatishlari (2027-yil aprelgacha)
Node 24 Faol LTS — hozir o'rnatiladigani
Node 26 Current; 2026-yil 28-oktabrda LTS bo'ladi

2026-yil oktabridan Node.js yangi tartibga o'tadi: yiliga bitta katta versiya (27 — 2027-yilda, 28 — 2028-yilda) va har biri LTS bo'ladi. Toq/juft qoidasi yo'qoladi.

Maslahat: Raqamlarni yodlash shart emas. nodejs.org ga kiring — yuklab olish sahifasida "LTS" yozuvli versiya turadi. Siz bu darsni qachon o'qisangiz ham, o'shani tanlang.

Tekshirib ko'ring: Do'stingiz "eng yangisi eng yaxshisi" deb Current versiyani o'rnatmoqchi. Unga nima deysiz?

Javob

Current — hali sinov bosqichidagi versiya: ba'zi kutubxonalar u bilan ishlamasligi, yangi imkoniyatlar o'zgarishi mumkin. LTS barqaror va uzoq qo'llab-quvvatlanadi. O'qish va real ish uchun LTS to'g'ri tanlov.

4. O'rnatish

4.1 Eng oddiy yo'l: rasmiy o'rnatuvchi

  1. nodejs.org → Download → LTS.
  2. Windows uchun .msi, macOS uchun .pkg faylni yuklab oling.
  3. O'rnatuvchini ishga tushiring va "Next" bilan davom eting. Add to PATH bandi yoqilgan bo'lsin (odatda o'zi yoqilgan).
  4. "Tools for Native Modules" katakchasini hozircha belgilamang — u juda ko'p qo'shimcha dastur o'rnatadi, bizga kerak emas.

Yoki paket menejeri bilan:

bash
# Windows (PowerShell)
winget install --id OpenJS.NodeJS.LTS -e

# macOS (Homebrew)
brew install node@24

O'rnatuvchi node va npm ni PATH ga qo'shadi. Terminalni yopib, qayta oching — eski oyna yangi PATH'ni bilmaydi.

4.2 Tekshirish

bash
node -v
npm -v

Natija taxminan shunday (raqamlar sizda boshqacha bo'lishi mumkin):

text
v24.21.0
11.19.0
  • v24.21.0 — Node.js versiyasi: 24 — katta versiya, 21 — kichik yangilanish, 0 — tuzatish.
  • 11.19.0 — npm versiyasi. npm — Node.js bilan birga keladigan paket menejeri, keyingi darsda o'rganamiz.

Tekshirib ko'ring: Node.js o'rnatib bo'ldingiz, lekin ochiq turgan terminalda node -v xato beryapti. Birinchi nima qilasiz?

Javob

Terminalni yopib, qayta ochasiz (VS Code ichidagisi bo'lsa — VS Code'ni ham). Terminal PATH'ni ochilgan paytda o'qiydi. O'rnatuvchi PATH'ni o'zgartirgan, lekin eski oyna buni bilmaydi.

5. Node.js bilan birinchi ish

5.1 REPL — tez sinash joyi

Terminalda faqat node yozib Enter bossangiz, REPL ochiladi:

text
$ node
Welcome to Node.js v24.21.0.
Type ".help" for more information.
> 100 + 250
350
> Math.sqrt(144)
12
> "Toshkent".length
8
> .exit
$

REPL — Read-Eval-Print Loop, ya'ni "o'qi — bajar — chiqar — takrorla":

  1. Read — siz yozgan qatorni o'qiydi.
  2. Eval — uni bajaradi.
  3. Print — natijani chiqaradi.
  4. Loop — yana > belgisini ko'rsatib kutadi.

> — REPL'ning prompti. U "men JavaScript kutyapman" degani. Terminalning o'z prompti ($ yoki PS C:\>) esa "men shell buyrug'ini kutyapman" degani.

  • Math.sqrt(144) — 144 ning kvadrat ildizi.
  • "Toshkent".length — satrdagi harflar soni.

Ularni 08-qismda batafsil o'rganamiz. Hozir REPL — kalkulyator kabi tez sinash joyi ekanini bilsangiz bo'ldi.

REPL'dan chiqish: .exit yozing yoki Ctrl + C ni ikki marta bosing (yoki Ctrl + D bir marta).

5.2 Faylni bajarish: node fayl.js

REPL yopilganda yozganlaringiz yo'qoladi. Dastur odatda faylga yoziladi.

  1. VS Code'da salom.js fayl yarating va yozing:
js
console.log("Salom, Node.js!");
console.log(2 + 3);
  1. Faylni saqlang (Ctrl + S).
  2. Ichki terminalda (Ctrl + ` ) fayl turgan papkada:
bash
node salom.js

Konsolda:

text
Salom, Node.js!
5

node salom.js — "Node, salom.js faylini ol va ichidagi kodni yuqoridan pastga bajar". Fayl tugagach, Node o'zi to'xtaydi va terminal promptiga qaytadi.

5.3 Brauzerda yo'q narsa: process

Node.js'da process degan obyekt bor — "hozir ishlab turgan dastur haqida ma'lumot". Brauzerda u yo'q:

js
console.log(process.platform);
console.log(process.version);

Windows'da natija taxminan:

text
win32
v24.21.0
  • process.platform — operatsion tizim: Windows'da win32 (64-bitli bo'lsa ham shunday), macOS'da darwin, Linux'da linux.
  • process.version — Node.js versiyasi, node -v bilan bir xil.

Maslahat: Faylni har o'zgartirganda qayta node salom.js yozish shart emas. node --watch salom.js — fayl saqlanishi bilan Node uni o'zi qayta ishga tushiradi. To'xtatish — Ctrl + C.

Tekshirib ko'ring: salom.js da ikki qator bor. node salom.js dan keyin terminal yana prompt ko'rsatdi. REPL'dagidek > chiqmadi. Nega?

Javob

node fayl.js faylni bajaradi va ish tugagach chiqib ketadi. REPL esa faqat node ni faylsiz ishga tushirganda ochiladi va siz chiqmaguningizcha kutib turadi.

6. Versiya menejerlari va .nvmrc

6.1 Muammo

Ali ikkita loyihada ishlaydi. Eski loyiha Node 22 da yozilgan va 24 da ishlamaydi. Yangi loyiha esa Node 24 ni talab qiladi. Oddiy o'rnatuvchi bilan kompyuterda faqat bitta Node bo'ladi. Har safar o'chirib, boshqasini o'rnatish — azob.

Versiya menejeri — bir kompyuterda bir nechta Node versiyasini saqlaydigan va ular orasida bir buyruq bilan almashtiradigan dastur.

Menejer OS Holati (2026)
fnm (Fast Node Manager) Windows, macOS, Linux Tez, faol — tavsiya
nvm macOS, Linux Eng eski va mashhur
nvm-windows Faqat Windows nvm'ga o'xshash, alohida loyiha
Volta Hammasi 2026-yildan qo'llab-quvvatlanmaydi

Volta mualliflari loyihani to'xtatib, mise ga o'tishni tavsiya qilgan. Eski loyihalarda Volta'ni uchratishingiz mumkin, yangi o'rnatmang.

6.2 fnm bilan ishlash

O'rnatish:

bash
# Windows
winget install Schniz.fnm

# macOS
brew install fnm

Keyin fnm'ni shell sozlamasiga ulash kerak — shunda har yangi terminal fnm'ni taniydi. Bir qatorni shell'ning sozlama fayliga qo'shasiz (PATH va .bashrc darsi, PowerShell darsi):

PowerShell — $PROFILE fayliga (notepad $PROFILE bilan ochiladi):

powershell
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

Git Bash — ~/.bashrc ga:

bash
eval "$(fnm env --use-on-cd --shell bash)"

macOS (zsh) — ~/.zshrc ga:

bash
eval "$(fnm env --use-on-cd --shell zsh)"

--use-on-cd — "papkaga kirganda, u yerdagi .nvmrc ga qarab versiyani o'zi almashtir".

Terminalni qayta oching va Node o'rnating:

bash
fnm install 24
fnm install 22
fnm default 24
fnm list
  • fnm install 24 — Node 24 ni yuklab o'rnatadi.
  • fnm default 24 — yangi terminallarda doim 24 ishlasin.
  • fnm list — o'rnatilgan versiyalar ro'yxati.

Vaqtincha boshqa versiyaga o'tish:

bash
fnm use 22
node -v
text
v22.23.3

6.3 .nvmrc — loyihaning "Node talabi"

Loyiha papkasida .nvmrc nomli bir qatorlik fayl yaratiladi:

text
24

Bu "bu loyiha Node 24 da ishlaydi" degani. Endi:

  • --use-on-cd bilan fnm papkaga kirishingiz bilan 24 ga o'tadi.
  • Yoki qo'lda: fnm use (nvm'da nvm use) — fayldagi versiyani yoqadi.

.nvmrc ni fnm ham, nvm ham tushunadi. Ba'zi loyihalarda xuddi shu vazifadagi .node-version fayli bo'ladi — fnm uni ham o'qiydi.

Tekshirib ko'ring: Loyihada .nvmrc ichida 22 yozilgan, sizda esa default 24. fnm --use-on-cd bilan sozlangan. Loyiha papkasiga cd qilib, node -v yozsangiz nima chiqadi?

Javob

v22... — fnm papkaga kirganda .nvmrc ni o'qib, 22 ga o'tkazdi. Agar Node 22 o'rnatilmagan bo'lsa, fnm o'rnatishni taklif qiladi. Papkadan chiqsangiz, default versiya qaytadi.

6.4 Qaysi yo'lni tanlash kerak

  • Endi boshlayapsiz va hozircha bitta loyiha — rasmiy o'rnatuvchi yetadi.
  • Bir nechta loyiha yoki ish joyi — fnm.

Ikkisini aralashtirmang. fnm'ga o'tmoqchi bo'lsangiz, avval rasmiy o'rnatuvchidan o'rnatilgan Node'ni o'chiring (Windows: Sozlamalar → Ilovalar → Node.js → O'chirish).

7. Ko'p uchraydigan xatolar

7.1 node tanilmayapti

Belgisi:

text
node : The term 'node' is not recognized as the name of a cmdlet,
function, script file, or operable program.

macOS/Linux'da: zsh: command not found: node. Tarjima: "'node' so'zi buyruq, funksiya yoki dastur nomi sifatida tanilmadi." Sabab: Node o'rnatilmagan, PATH'da yo'q yoki terminal o'rnatishdan oldin ochilgan. fnm ishlatsangiz — shell sozlamasiga fnm env qatori qo'shilmagan. Tuzatish: terminalni qayta oching. Bo'lmasa — where.exe node (Windows) yoki which node bilan qidiring (PATH darsi). fnm bo'lsa — shell sozlama faylidagi fnm env qatorini tekshiring.

7.2 JavaScript'ni shell'ga yozish

Belgisi: PowerShell'da console.log("salom") yozdingiz va: The term 'console.log' is not recognized.... Bash'da: syntax error near unexpected token. Sabab: siz JavaScript'ni shell'ga yozdingiz. Shell JavaScript'ni bilmaydi. Tuzatish: avval node yozib REPL'ga kiring (> prompti chiqadi) yoki kodni faylga yozib node fayl.js qiling.

7.3 Shell buyrug'ini REPL'ga yozish

Belgisi: > promptida node app.js yozdingiz va:

text
Uncaught SyntaxError: Unexpected identifier 'app'

Tarjima: "Kutilmagan nom: 'app'." Sabab: siz REPL ichidasiz, u faqat JavaScript kutadi. node app.js — shell buyrug'i. JavaScript node ni nom deb qabul qildi, lekin yonidagi app so'zini tushunmadi — shuning uchun xato app ni ko'rsatadi, node ni emas. Tuzatish: .exit bilan REPL'dan chiqing, keyin node app.js yozing. Qoida: > prompti — JavaScript; $ yoki PS ...> — shell.

7.4 Fayl topilmadi

Belgisi:

text
Error: Cannot find module 'C:\Users\Ali\app.js'

Tarjima: "Modul (fayl) topilmadi." Sabab: terminal boshqa papkada turibdi yoki fayl nomi xato. Xabarda Node qidirgan to'liq yo'l yozilgan — shunga qarang. Tuzatish: ls bilan papkada fayl borligini tekshiring, cd bilan to'g'ri papkaga o'ting (yo'llar darsi). VS Code ichki terminali loyiha papkasida ochiladi — shu qulay.

7.5 Node'da document

Belgisi: internetdan ko'chirilgan kodni node bilan ishga tushirdingiz:

text
ReferenceError: document is not defined

Tarjima: "document degan narsa aniqlanmagan." Sabab: kod brauzer uchun yozilgan. Node.js'da sahifa yo'q, demak document ham yo'q. Tuzatish: bu kodni brauzerda ishga tushiring (HTML sahifa orqali — 04- va 09-qismlarda).

8. Mashqlar

1-mashq (oson): REPL kalkulyator

REPL'ni oching va hisoblang:

  1. Bitta non 5000 so'm. 7 ta non necha pul?
  2. 360 000 so'mni 4 kishiga teng bo'lsak, har biriga qancha?
  3. REPL'dan chiqing.

Yordam: ko'paytirish — *, bo'lish — /.

Yechim
text
> 5000 * 7
35000
> 360000 / 4
90000
> .exit

Sonlarni bo'sh joysiz yozing: 360 000 emas, 360000. JavaScript bo'sh joyni ikki alohida son deb tushunadi va xato beradi.

2-mashq (o'rta): Birinchi fayl

tanishuv.js fayl yarating. U ismingizni va 2026 dan tug'ilgan yilingizni ayirib, yoshingizni chiqarsin. Masalan, 2004 yilda tug'ilgan Jasur uchun:

text
Jasur
22

Faylni node tanishuv.js bilan bajaring. Yordam: console.log("...") — matn, console.log(2026 - 2004) — hisob.

Yechim
js
console.log("Jasur");
console.log(2026 - 2004);

Konsolda:

text
Jasur
22

Matn qo'shtirnoqda, son esa qo'shtirnoqsiz — aks holda JavaScript ayirmaydi, shunchaki matnni chiqaradi. Buni 08-qismda batafsil ko'ramiz.

3-mashq (o'rta): Qayerda xato?

Malika uchta ish qildi. Har birida nima noto'g'ri?

  1. PowerShell'da yozdi: console.log("Salom")
  2. > promptida yozdi: node -v
  3. node tanishuv.js yozdi, lekin Cannot find module chiqdi, garchi fayl Ish stolida bo'lsa ham.
Yechim
  1. JavaScript shell'ga yozilgan — PowerShell console.log degan buyruqni bilmaydi. Avval node bilan REPL'ga kirish yoki kodni faylga yozish kerak.
  2. Shell buyrug'i REPL'ga yozilgan. .exit bilan chiqib, keyin node -v.
  3. Terminal boshqa papkada. cd bilan Ish stoliga o'tish (yoki faylning to'liq yo'lini yozish) kerak.

4-mashq (qiyin): Ikki versiya

(fnm o'rnatilgan bo'lsa.)

  1. Node 22 va 24 ni o'rnating, default — 24.
  2. eski-loyiha papkasini yarating, ichiga 22 yozilgan .nvmrc qo'ying.
  3. eski-loyiha ga kirib, keyin undan chiqib, har safar node -v ni tekshiring.
Yechim

Git Bash'da:

bash
fnm install 22
fnm install 24
fnm default 24
mkdir eski-loyiha
echo 22 > eski-loyiha/.nvmrc
cd eski-loyiha
node -v
cd ..
node -v

PowerShell 5.1 da echo 22 > fayl faylni UTF-16 kodlashda yozadi va fnm uni o'qiy olmasligi mumkin (matn kodlash darsi). PowerShell'da .nvmrc ni VS Code'da yarating.

eski-loyiha ichida v22..., tashqarida v24.... Shell sozlamasida --use-on-cd bo'lmasa, papkaga kirgach fnm use ni qo'lda yozasiz.

9. Real ishda

  • Backend — Node.js'da serverlar yoziladi — Express va NestJS bilan. Bu kursning 24–31-qismlari shu haqda.
  • Frontend asboblari — React loyihangiz brauzerda ishlasa ham, uni yig'adigan, tekshiradigan va ishga tushiradigan vositalar (Vite, ESLint, Prettier) Node.js'da ishlaydi. Shuning uchun frontend dasturchiga ham Node shart.
  • Skriptlar va botlar — Fayllarni avtomatlashtirish, Telegram bot — kichik Node.js dasturlari.
  • Versiyalar — Deyarli har loyihada .nvmrc yoki shunga o'xshash yozuv bor. Serverga joylashda ham aynan shu versiya o'rnatiladi.
  • Intervyu savollari — "Node.js nima?" (JavaScript runtime, V8 asosida), "LTS nima?", "Brauzer va Node.js farqi?" — boshlang'ich darajada albatta so'raladi.

Xulosa

  • Node.js — JavaScript'ni brauzerdan tashqarida bajaradigan runtime; ichida V8, sahifa yo'q, fayllar va tarmoq bor.
  • Doim LTS versiya: 2026-yil sentabrida — Node 24; Node 26 esa 2026-yil 28-oktabrda LTS bo'ladi.
  • Tekshirish: node -v, npm -v; o'rnatgandan keyin terminalni qayta oching.
  • node — REPL (> — JavaScript kutadi); node fayl.js — faylni bajaradi.
  • Bir nechta versiya — fnm; loyiha talabi — .nvmrc.

Keyingi dars: npm'ga birinchi qadam — Node.js bilan kelgan npm yordamida tayyor kutubxonani loyihangizga qo'shasiz.

Manbalar

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Node.js nima va uni o'rnatish: LTS, REPL va versiya menejeri — IlmHamroh