Mundarija (30)
- Bu darsda
- 1. Nega bu kerak?
- 2. Inspector: Node'ning "eshigi"
- 2.1 --inspect nima qiladi
- 2.2 Uch bayroq
- 2.3 Eshik ortida nima bor
- 2.4 Port band bo'lsa
- 3. node inspect: terminaldagi debugger
- 3.1 Xatoli dastur
- 3.2 Sessiya
- 3.3 Kutilmagan saboq: TDZ
- 3.4 Kuzatish va qadamlar
- 3.5 Shartli breakpoint
- 3.6 debugger; kalit so'zi
- 4. VS Code: grafik debugger
- 4.1 JavaScript Debug Terminal — eng oson yo'l
- 4.2 launch.json
- 4.3 Shartli breakpoint, hit count, logpoint
- 4.4 Chrome DevTools
- 5. Xavfsizlik: portni ochmang
- 6. CLI qadami: valyuta va debug (holat 46, 2-qism)
- 7. Ko'p uchraydigan xatolar
- 8. Mashqlar
- 1-mashq (oson): qaysi buyruq?
- 2-mashq (o'rta): logpoint'ni kodda modellash
- 3-mashq (qiyin): debugger bilan xato topish
- 4-mashq: CLI qadami
- 9. Real ishda
- Xulosa
- Manbalar
Node.js'ni debug qilish: --inspect, node inspect va VS Code
Qisqacha: Node'da ichki debugger bor:
node --inspect app.jsjarayonni127.0.0.1:9229portida ochadi, unga VS Code yoki Chrome DevTools (chrome://inspect) ulanadi.--inspect-brkbirinchi qatorda to'xtaydi,--inspect-waitdebugger ulanishini kutadi. Terminalning o'zida —node inspect app.js:sb(7)breakpoint qo'yadi,contdavom ettiradi,exec xqiymatni ko'rsatadi. Shartli breakpoint (k.kod === "IDR") va logpointconsole.logni kodga yozmasdan almashtiradi. Biznode inspectni haqiqatan ishga tushirdik; VS Code va DevTools ulanishini sinamadik — u qismlar hujjat bo'yicha.
Bu darsda
--inspect,--inspect-brk,--inspect-waitfarqini va 9229-port nimaligini bilasiz.node inspectbilan terminalda breakpoint qo'yib, o'zgaruvchilarni ko'rib, qadamma-qadam yurasiz.- Shartli breakpoint va logpoint bilan faqat kerakli joyda to'xtaysiz.
- VS Code'da
launch.jsonva JavaScript Debug Terminal'ni sozlaysiz. - Inspector portini internetga ochish nega xavfli ekanini tushuntira olasiz.
Oldin bilishingiz kerak: DevTools bilan debug qilish, Debugging metodologiyasi, TDZ, Permission model.
1. Nega bu kerak?
valyuta kurs IDR ishlaydi, lekin IDR uchun konvertatsiya 100 baravar katta chiqyapti. Odatiy yo'l: kodga console.log(k), console.log(birlik) qo'shib, qayta ishga tushirish. Keyin yana bitta log. Keyin ularni o'chirishni unutib, commit'ga tushib qolishi.
Brauzerda buning yaxshiroq yo'lini ko'rgansiz: DevTools'da breakpoint qo'yasiz, kod to'xtaydi, hamma o'zgaruvchi ko'z oldingizda. Node'da ham aynan shu bor — faqat brauzer oynasi yo'q, shuning uchun debugger tashqaridan ulanadi.
O'xshatish: avtomobil servisi. console.log — haydovchidan "qanday tovush chiqyapti?" deb so'rash. Debugger — mashinani ko'targichga chiqarib, motor ishlab turganda ichiga qarash.
2. Inspector: Node'ning "eshigi"
2.1 --inspect nima qiladi
node --inspect app.js Node ichidagi inspector ni yoqadi. Bu — V8 debugger'iga tashqaridan WebSocket orqali ulanish nuqtasi. Sukut bo'yicha manzil 127.0.0.1:9229. Chrome DevTools, VS Code va node inspect — hammasi bir xil protokol (Chrome DevTools Protocol) bilan shu eshikka ulanadi.
flowchart LR
A["node --inspect app.js"] --> I["inspector<br/>127.0.0.1:9229"]
V["VS Code"] -->|WebSocket| I
C["chrome://inspect"] -->|WebSocket| I
T["node inspect<br/>(terminal)"] -->|WebSocket| I
I --> V8["V8: breakpoint,<br/>stek, o'zgaruvchilar"]Chapdagi uch mijozdan istalgani bitta portga ulanadi. Qaysi birini tanlash — qulaylik masalasi, imkoniyatlar bir xil manbadan.
2.2 Uch bayroq
| Bayroq | Nima qiladi | Qachon |
|---|---|---|
--inspect |
Eshikni ochadi, kod darhol ishlaydi | Server: keyinroq ulanasiz |
--inspect-brk |
Birinchi qatorda to'xtaydi | Qisqa skript: boshidan kuzatish |
--inspect-wait |
Debugger ulanguncha kutadi, keyin ishlaydi | Ulanib, breakpoint qo'yib, keyin boshlash |
=port bilan boshqa port: --inspect=9230; =0 — tasodifiy bo'sh port. valyuta bir zumda tugaydigan CLI — --inspect bilan debugger ulanib ulgurmaydi. Unga --inspect-brk yoki --inspect-wait kerak.
2.3 Eshik ortida nima bor
Biz node --inspect-brk=127.0.0.1:0 hisob.mjs ni ishga tushirdik. stderr'ga:
Debugger listening on ws://127.0.0.1:63202/fe901b78-7687-4643-b09c-765ba12e5695
For help, see: https://nodejs.org/learn/getting-started/debugging63202 — tasodifiy port (sizda boshqa), oxiridagi UUID — sessiya identifikatori. Inspector HTTP orqali o'zi haqida ham aytadi — fetch bilan http://127.0.0.1:63202/json/list ni so'radik (qisqartirilgan):
"title": "hisob.mjs",
"type": "node",
"devtoolsFrontendUrl": "devtools://devtools/bundled/js_app.html?…&ws=127.0.0.1:63202/fe901b78-…",
"webSocketDebuggerUrl": "ws://127.0.0.1:63202/fe901b78-7687-4643-b09c-765ba12e5695"chrome://inspect sahifasi aynan shu ro'yxatni o'qib, "Remote Target" ostida hisob.mjs ni ko'rsatadi. /json/version esa { Browser: 'node.js/v24.21.0', 'Protocol-Version': '1.1' } qaytardi.
2.4 Port band bo'lsa
Bir jarayon --inspect-brk bilan 9229 ni egallab turganda ikkinchisini --inspect bilan ishga tushirdik:
Starting inspector on 127.0.0.1:9229 failed: address already in use
ikkinchi ishladiDiqqat: dastur to'xtamadi — debuggersiz ishlab ketdi. Siz breakpoint kutasiz, lekin u hech qachon to'xtamaydi. Birinchi qatorni o'qing yoki boshqa port bering (--inspect=9230).
Tekshirib ko'ring:
node --inspect src/bin.ts kurs USDni ishga tushirib, darhol VS Code'dan ulanmoqchi bo'ldingiz — "hech narsa topilmadi". Nega?
Javob
--inspect kodni darhol ishga tushiradi. valyuta kurs USD ~100 ms da tugaydi — debugger ulanishga ulgurmaydi, jarayon allaqachon yo'q. Qisqa dasturlar uchun --inspect-brk (birinchi qatorda kutadi) yoki --inspect-wait (ulanguncha boshlamaydi).
3. node inspect: terminaldagi debugger
3.1 Xatoli dastur
Debugger'ni haqiqiy xatoda sinaymiz. hisob.mjs har valyutaning bitta birlik kursini chiqarishi kerak (IDR kursi 10 birlik uchun beriladi — process darsidagi valyuta chiqishini eslang):
const kurslar = [
{ kod: "USD", nominal: 1, kurs: 11903.15 },
{ kod: "IDR", nominal: 10, kurs: 6.59 },
{ kod: "EUR", nominal: 1, kurs: 13329.15 },
];
for (const k of kurslar) {
const birlik = k.kurs * k.nominal; // xato: bo'lish kerak edi
console.log(k.kod, birlik.toFixed(4));
}Konsolda:
USD 11903.1500
IDR 65.9000
EUR 13329.1500IDR 0.659 bo'lishi kerak edi. Xato ko'rinib turibdi, lekin uni debugger bilan "topamiz" — buyruqlarni o'rganish uchun.
3.2 Sessiya
node inspect hisob.mjs — Node ikki jarayon ochadi: dastur (--inspect-brk bilan) va unga ulangan terminal mijozi. Biz buyruqlarni sinov skriptidan stdin orqali yubordik (haqiqiy terminal — TTY — emas); sizda xuddi shunday, faqat o'zingiz yozasiz. Haqiqiy chiqish, qisqartirilgan:
< Debugger listening on ws://127.0.0.1:9229/a427c997-…
connecting to 127.0.0.1:9229 ... ok
< Debugger attached.
debug> Break on start in hisob.mjs:1
> 1 const kurslar = [
debug> sb(7)
debug> cont
debug> break in hisob.mjs:7
6 for (const k of kurslar) {
> 7 const birlik = k.kurs * k.nominal; // xato: bo'lish kerak edi
debug> exec k.kod
'USD'Qatorma-qator:
Break on start—node inspectdoim birinchi qatorda to'xtaydi (--inspect-brkkabi).sb(7)— set breakpoint: 7-qatorga to'xtash nuqtasi.cont— continue: keyingi to'xtash nuqtasigacha davom et.>belgisi — hozir shu qator bajarilish arafasida.exec k.kod— shu paytdagi kontekstda ifodani hisobla:'USD'.
3.3 Kutilmagan saboq: TDZ
Shu joyda birlik ni so'radik:
debug> exec birlik
ReferenceError: Cannot access 'birlik' from debugger"Debugger'dan birlik ga murojaat qilib bo'lmaydi". Nega? > 7-qatorni ko'rsatyapti — u hali bajarilmagan. const birlik e'lon qilingan, lekin qiymat olmagan: bu TDZ (vaqtinchalik o'lik zona). Debugger ham TDZ qoidasiga bo'ysunadi. Qiymatni ko'rish uchun bir qadam yuring.
3.4 Kuzatish va qadamlar
debug> watch('k.kod')
debug> cont
< USD 11903.1500
debug> break in hisob.mjs:7
Watchers:
0: k.kod = 'IDR'
debug> next
debug> step in hisob.mjs:8
* 7 const birlik = k.kurs * k.nominal; // xato: bo'lish kerak edi
> 8 console.log(k.kod, birlik.toFixed(4));
debug> cont
< IDR 65.9000watch('k.kod')— har to'xtashda shu ifodani ko'rsat (Watchers:bo'limi).< USD 11903.1500—<bilan boshlangan qator — dasturning o'z chiqishi.next— keyingi qatorga o'tish (funksiya ichiga kirmasdan).*— breakpoint qo'yilgan qator belgisi.
Asosiy buyruqlar:
| Buyruq | Ma'nosi |
|---|---|
cont, c |
Davom etish |
next, n |
Keyingi qator |
step, s |
Funksiya ichiga kirish |
out, o |
Funksiyadan chiqish |
sb(qator) / cb(fayl, qator) |
Breakpoint qo'yish / olib tashlash |
exec ifoda, repl |
Qiymatni hisoblash / interaktiv rejim |
watch('ifoda'), bt |
Kuzatish / chaqiruvlar steki (backtrace) |
.exit |
Chiqish |
3.5 Shartli breakpoint
Uch valyutada bu oson. 74 ta valyutada (CBU ro'yxati) har birida cont bosish — azob. Shartli breakpoint faqat shart rost bo'lganda to'xtaydi:
debug> sb('hisob.mjs', 8, 'k.kod === "IDR"')
debug> cont
< USD 11903.1500
debug> break in hisob.mjs:8
> 8 console.log(k.kod, birlik.toFixed(4));
debug> exec [k.kod, birlik]
[ 'IDR', 65.9 ]USD o'tib ketdi, to'xtash faqat IDR da. birlik 65.9 — 6.59 * 10. Xato topildi: nominalga ko'paytirish emas, bo'lish kerak. valyuta dagi birlikKursi aynan shunday qiladi: kurs / nominal.
3.6 debugger; kalit so'zi
Breakpoint'ni kod ichiga ham yozish mumkin. Debugger ulanmagan bo'lsa, u hech narsa qilmaydi:
const kurs = 11903.15;
debugger; // debugger yo'q — e'tiborsiz qoldiriladi
console.log(kurs * 100);Konsolda:
1190315Kanon sessiyasida (t45) xuddi shunday faylda node inspect cont dan keyin break in dbg.mjs:3 — aynan debugger; qatorida to'xtadi. debugger; ni commit qilmang — ESLint'ning no-debugger qoidasi uni ushlaydi.
4. VS Code: grafik debugger
Diqqat: Bu bo'limni biz sinamadik — sinov muhitimizda VS Code va Chrome oynasini ochib bo'lmadi. Linux va macOS ham sinalmagan (biz faqat Windows 11 da ishladik). Hammasi rasmiy hujjat (VS Code — Node.js debugging, 2026-10-23 da o'qildi) bo'yicha. Biror narsa siz ko'rgandan farq qilsa — hujjat ustun.
4.1 JavaScript Debug Terminal — eng oson yo'l
VS Code'da: Command Palette → Debug: Create JavaScript Debug Terminal (yoki terminal turlari ro'yxatidan). Shu terminalda ishga tushirilgan har node jarayonga (va npm run dev, node --test ga ham) VS Code avtomatik ulanadi. Hech qanday bayroq yoki sozlama kerak emas. Breakpoint — qator raqamining chap tomonini bosish (qizil nuqta). Yana bir variant — Auto Attach (smart, always, onlyWithFlag rejimlari): oddiy terminaldan ishga tushirilgan Node jarayonlariga avtomatik ulanadi.
4.2 launch.json
Har safar bir xil buyruqni debug qilsangiz — .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "valyuta kurs IDR",
"program": "${workspaceFolder}/src/bin.ts",
"args": ["kurs", "IDR", "--offline"],
"env": { "VALYUTA_KESH": "${workspaceFolder}/.kesh-debug" },
"skipFiles": ["<node_internals>/**"]
}
]
}"request": "launch"— VS Code dasturni o'zi ishga tushiradi;"attach"— allaqachon--inspectbilan ishlayotganiga ulanadi ("port": 9229).program—.tsfayl bo'lishi mumkin: Node 24 uni o'zi bajaradi (TS to'g'ridan), qator raqamlari mos (turlar bo'sh joyga aylanadi).skipFiles—stepbosganda Node'ning ichki kodiga kirmaslik.env— debug paytida haqiqiy keshingizga tegmaslik uchun alohida papka.
F5 — ishga tushirish. Chap panelda: Variables (o'zgaruvchilar), Watch (kuzatuv), Call Stack (chaqiruvlar steki), Breakpoints.
4.3 Shartli breakpoint, hit count, logpoint
Qizil nuqtaga o'ng tugma (hujjat bo'yicha):
- Conditional Breakpoint — ifoda:
k.kod === "IDR"(yuqoridagisb(…, 'shart')ning grafik ko'rinishi). - Hit Count — necha marta yetganda to'xtash:
>10(10 martadan keyin),%2(har ikkinchisida). - Logpoint — to'xtamaydi, faqat konsolga yozadi:
kod={k.kod} birlik={birlik}. Bu — kodni o'zgartirmasdanconsole.log. Debug tugagach, kodda hech qanday iz qolmaydi.
4.4 Chrome DevTools
Brauzerda chrome://inspect → "Open dedicated DevTools for Node". Sources paneli brauzer darsidagidek. Bu yo'l ham sinalmagan — biz faqat inspector /json/list da DevTools uchun tayyor manzil (devtoolsFrontendUrl) berishini ko'rdik.
5. Xavfsizlik: portni ochmang
--inspect=0.0.0.0:9229 — inspector'ni hamma tarmoq interfeyslariga ochadi. Node hujjati ochiq ogohlantiradi: inspektorni ochiq IP'ga bog'lash xavfli, tashqi xost ulanib, istalgan kodni bajarishi (remote code execution) mumkin. Debugger'ga ulangan odam exec bilan hamma narsani qila oladi — fayl o'qish, jarayon ochish.
Qoidalar:
- Sukut
127.0.0.1ni o'zgartirmang. - Uzoq serverni debug qilish kerak bo'lsa — SSH tunnel:
ssh -L 9229:127.0.0.1:9229 server(port faqat sizning kompyuteringizda ochiladi). - Prod jarayonni
--inspectbilan qoldirmang. - Permission model bilan inspector ham cheklanadi (hujjatdagi ro'yxatda "Inspector protocol" bor); ochish uchun —
--allow-inspector.
6. CLI qadami: valyuta va debug (holat 46, 2-qism)
Holat 46 ning bu darsga tegishli qismi — kod emas, ish usuli. Kanon NODE_DEBUG=valyuta ni (util darsida qo'shilgan debuglog) to'liq stack bilan kengaytirdi: cli.ts dagi xato ushlovchi endi debug("%s", xato.stack) ni ham yozadi. Bu — "debugger'siz debug": foydalanuvchi muammoni yuborganda undan NODE_DEBUG=valyuta valyuta … chiqishini so'raysiz. Natijasini keyingi darsda ko'rasiz. Hali commit qilmang — commit keyingi darsda.
O'zingiz uchun ish tartibi:
node --inspect-brk src/bin.ts kurs IDR --offlineKeyin VS Code'da "Attach" yoki JavaScript Debug Terminal'da shunchaki node src/bin.ts kurs IDR --offline. src/kurs.ts dagi birlikKursi ga breakpoint qo'ying va IDR uchun nominal 10 ekanini ko'ring.
Kanon o'lchovi (t45) bu holatdagi yana bir o'zgarishga tegishli: source map yoqilishi --help ni 87.7 dan 92.2 ms ga (+4.5 ms, n=15) oshirdi — bu keyingi darsning mavzusi.
7. Ko'p uchraydigan xatolar
| Belgi | Sabab | Davosi |
|---|---|---|
| Debugger ulanmadi, dastur tugab qoldi | --inspect + qisqa dastur |
--inspect-brk yoki --inspect-wait |
address already in use, breakpoint ishlamaydi |
9229 band — dastur debuggersiz ishladi | Eski jarayonni yoping yoki boshqa port |
Cannot access 'x' from debugger |
Qator hali bajarilmagan (TDZ) | next, keyin exec |
| Breakpoint "kulrang", to'xtamaydi | Fayl boshqa (dist vs src) yoki source map yo'q | To'g'ri faylga qo'ying; .ts — Node 24 da to'g'ridan |
step Node ichiga kirib ketdi |
skipFiles yo'q |
"<node_internals>/**" |
debugger; prod'ga tushdi |
Unutilgan | ESLint no-debugger |
Serverda --inspect=0.0.0.0 |
Port tashqariga ochiq | Faqat 127.0.0.1 + SSH tunnel |
8. Mashqlar
Yechimlar kurs/mashqlar/24/45-debug/ da.
1-mashq (oson): qaysi buyruq?
- Birinchi qatorda to'xtab, debugger kutadigan bayroq —
--inspect- node inspectda 12-qatorga breakpoint —- Keyingi breakpoint'gacha davom etish —
- Inspector sukut porti —
- To'xtamasdan konsolga yozadigan breakpoint turi —
Yechim
- brk — "break".
- sb(12) — set breakpoint.
- cont — yoki qisqa
c. - 9229 —
127.0.0.1:9229. - logpoint — VS Code'da qizil nuqtaga o'ng tugma → Add Logpoint.
2-mashq (o'rta): logpoint'ni kodda modellash
VS Code logpoint'i kod={k.kod} birlik={birlik} kabi shablonni olib, {…} ichidagi ifodani hisoblaydi. Shunga o'xshash formatLogpoint(template, scope) funksiyasini yozing: {nom} va {obj.maydon} ni scope dan oladi (nuqtali yo'l), topilmasa — <yo'q>. eval ishlatmang — u satrdagi istalgan kodni bajaradi va xavfli.
Yechim
function formatLogpoint(template, scope) {
return template.replace(/\{([\w.]+)\}/g, (_, path) => {
let value = scope;
for (const key of path.split(".")) {
value = value?.[key];
}
return value === undefined ? "<yo'q>" : String(value);
});
}
const k = { kod: "IDR", nominal: 10, kurs: 6.59 };
const scope = { k, birlik: 65.9 };
console.log(formatLogpoint("kod={k.kod} birlik={birlik}", scope));
const template = "nominal={k.nominal} sana={k.sana}";
console.log(formatLogpoint(template, scope));Konsolda:
kod=IDR birlik=65.9
nominal=10 sana=<yo'q>Haqiqiy logpoint {} ichida istalgan JS ifodani bajaradi (debugger kontekstida). Bizning model faqat nuqtali yo'lni qo'llaydi — eval siz xavfsiz versiya.
3-mashq (qiyin): debugger bilan xato topish
Quyidagi funksiya 2026-10-19 dan 2026-10-23 gacha ish kunlari sonini qaytarishi kerak (5 kun, shanba-yakshanba yo'q — 2026-10-19 dushanba). U 4 qaytaradi. Avval node inspect bilan xatoni toping (sb, watch('kun'), cont), keyin tuzating. Javobda — qaysi buyruq xatoni ko'rsatdi.
function workdays(from, to) {
let count = 0;
const day = new Date(from);
while (day < new Date(to)) {
const w = day.getUTCDay();
if (w !== 0 && w !== 6) count++;
day.setUTCDate(day.getUTCDate() + 1);
}
return count;
}
console.log(workdays("2026-10-19", "2026-10-23")); // 4 — xatoYechim
Biz shu sessiyani o'tkazdik: sb(5), watch('day.toISOString()'), keyin cont bir necha marta. Kuzatuv (qisqartirilgan):
break in wd.mjs:5
0: day.toISOString() = '2026-10-19T00:00:00.000Z'
break in wd.mjs:5
0: day.toISOString() = '2026-10-20T00:00:00.000Z'
break in wd.mjs:5
0: day.toISOString() = '2026-10-21T00:00:00.000Z'
break in wd.mjs:5
0: day.toISOString() = '2026-10-22T00:00:00.000Z'
< 4…23 hech qachon kelmadi. Sikl sharti day < to oxirgi kunni chiqarib tashlaydi. Tuzatish — <=:
function workdays(from, to) {
let count = 0;
const day = new Date(from);
const end = new Date(to);
while (day <= end) {
const w = day.getUTCDay();
if (w !== 0 && w !== 6) count++;
day.setUTCDate(day.getUTCDate() + 1);
}
return count;
}
console.log(workdays("2026-10-19", "2026-10-23"));
console.log(workdays("2026-10-17", "2026-10-18"));Konsolda:
5
0Ikkinchi tekshiruv — dam olish kunlari (17–18 oktyabr, shanba-yakshanba): 0. "Chegaradagi" xato (off-by-one) — debugger'da watch bilan eng tez ko'rinadi: oxirgi qiymat qaysi ekanini bevosita ko'rasiz.
4-mashq: CLI qadami
valyuta da src/kurs.ts dagi birlikKursi ichida / ni vaqtincha * ga almashtiring. node inspect src/bin.ts kurs IDR --offline bilan (yoki VS Code'da) shu qatorga shartli breakpoint qo'yib (k.kod === "IDR"), exec bilan qiymatlarni ko'ring. npm test qaysi test yiqilishini ham tekshiring. Qaytaring. Commit qilmang.
Yechim
sb('src/kurs.ts', <qator>, 'k.kod === "IDR"'). Qator — birlikKursi ichidagi return (kanonda funksiya parametri k). exec [k.nominal, k.kurs * k.nominal] — [ 10, 65.9 ]. npm test da test/kurs.test.ts dagi "nominal hisobga olinadi (IDR — 10 birlik uchun)" testi yiqiladi. Test xato borligini avtomatik aytadi, debugger esa qayerda va nega ekanini ko'rsatadi.
9. Real ishda
- Backend jamoalarda VS Code debugger kundalik vosita: serverni
--inspectbilan ishga tushirib, kelgan so'rovda to'xtash (25-qism serverlari). - Testni debug qilish — JavaScript Debug Terminal'da
node --testyoki Vitest: yiqilgan test ichida to'xtash. - Docker ichidagi Node —
--inspect=0.0.0.0:9229faqat konteyner ichida va port tashqariga faqat127.0.0.1ga ochiladi (Docker asoslari — 26-qism, deploy — keyingi qismlar). - Intervyu savollari: "
console.logdan boshqa qanday debug qilasiz?", "--inspectva--inspect-brkfarqi?", "Prod serverni qanday xavfsiz debug qilasiz?".
Xulosa
--inspect—127.0.0.1:9229da eshik;--inspect-brk— birinchi qatorda kutadi;--inspect-wait— ulanguncha boshlamaydi.node inspect:sb,cont,next,step,exec,watch,bt— terminaldagi to'liq debugger (biz sinadik).- Bajarilmagan qatordagi
const—Cannot access … from debugger(TDZ). - Shartli breakpoint, hit count, logpoint —
console.logni kodga yozmasdan almashtiradi. - VS Code: JavaScript Debug Terminal yoki
launch.json(sinalmagan, hujjat bo'yicha). - Inspector portini tashqariga ochmang — bu masofadan kod bajarish eshigi.
Keyingi dars: Stack trace, source map va error.cause — xato xabarini to'g'ri o'qish, nega valyuta da source map birinchi urinishda ishlamagani va xato sabablari zanjiri.
Manbalar
- Node.js 24 hujjati — Debugger (
node inspect, buyruqlar): https://nodejs.org/docs/latest-v24.x/api/debugger.html - Node.js 24 hujjati — CLI (
--inspect,--inspect-brk,--inspect-wait, ochiq IP haqida ogohlantirish): https://nodejs.org/docs/latest-v24.x/api/cli.html - Node.js — Debugging guide: https://nodejs.org/learn/getting-started/debugging
- VS Code hujjati — Node.js debugging (launch/attach, JavaScript Debug Terminal, Auto Attach,
skipFiles, logpoint, hit count): https://code.visualstudio.com/docs/nodejs/nodejs-debugging (2026-10-23 da o'qildi) - Kanon:
t45-debug(node inspect dbg.mjs,debugger;da to'xtash; source map narxi).hisob.mjssessiyalari, shartli breakpoint, TDZ xabari,/json/list, port bandligi — biz ishga tushirdik (Node 24.21.0, Windows 11). VS Code va Chrome DevTools ulanishi — sinalmagan.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!