Ce face util.inspect / util.format
console.log afișează obiectele folosind util.inspect. Apelat direct, inspect îți dă acel text, pe care îl poți salva sau trimite în jurnale. Opțiunea depth spune câte niveluri afișează (implicit 2; mai adânc apare [Object]); depth: null le afișează pe toate. sorted: true sortează cheile, breakLength decide când se trece pe rânduri noi.
util.format construiește un șir ca printf: %s pentru șir, %d pentru număr, %i pentru întreg, %j pentru JSON, %o pentru obiect. Este ce face și console.log("%s are %d ani", ...).
O clasă poate decide cum este afișată definind metoda [inspect.custom] (util pentru a ascunde parole). util.isDeepStrictEqual(a, b) compară profund două valori, fără să arunce erori ca assert.
Parametri
| Parametru | Descriere |
|---|---|
depth |
Câte niveluri de obiecte imbricate (implicit 2). |
compact |
Câte elemente interioare pe un rând; false pune fiecare proprietate pe rândul ei. |
breakLength |
Lungimea după care se trece pe rând nou (implicit 80). |
sorted |
Sortează cheile obiectelor. |
colors |
Adaugă culori ANSI. |
Ce returnează
Un șir.
Exemple
Exemplul 1: Obiecte adânci: depth
import { inspect } from "node:util";
const comanda = { id: 1024, client: { nume: "Ana", adresa: { oras: "Iași", strada: { nume: "Lăpușneanu", nr: 12 } } } };
console.log(comanda);
console.log(inspect(comanda, { depth: null, compact: false }));
Rezultat
{
id: 1024,
client: { nume: 'Ana', adresa: { oras: 'Iași', strada: [Object] } }
}
{
id: 1024,
client: {
nume: 'Ana',
adresa: {
oras: 'Iași',
strada: {
nume: 'Lăpușneanu',
nr: 12
}
}
}
}
Exemplul 2: util.format și isDeepStrictEqual
import { format, isDeepStrictEqual } from "node:util";
console.log(format("%s are %d ani și media %d", "Ana", 25, 9.5));
console.log(format("Comanda: %j", { id: 7, total: 120 }));
console.log(format("%s din %s", "Ion"));
console.log(isDeepStrictEqual({ note: [9, 10] }, { note: [9, 10] }));
console.log(isDeepStrictEqual({ nota: 9 }, { nota: "9" }));
Rezultat
Ana are 25 ani și media 9.5
Comanda: {"id":7,"total":120}
Ion din %s
true
false
Exemplul 3: Afișare personalizată cu inspect.custom
Parola nu apare niciodată în console.log sau în jurnale.
import { inspect } from "node:util";
class Utilizator {
constructor(email, parola) {
this.email = email;
this.parola = parola;
}
[inspect.custom]() {
return `Utilizator<${this.email}>`;
}
}
const u = new Utilizator("ana@exemplu.ro", "Iasi2026!");
console.log(u);
console.log({ autor: u });
Rezultat
Utilizator<ana@exemplu.ro>
{ autor: Utilizator<ana@exemplu.ro> }
Greșeli frecvente
- Folosești
JSON.stringifyca să depanezi obiecte: nu afișeazăundefined,Map,Setsau referințe circulare (dă eroare).inspectle afișează pe toate. - Vezi
[Object]în jurnal și crezi că datele lipsesc: este doar limitadepth. Foloseșteinspect(x, { depth: null })sauconsole.dir(x, { depth: null }). - Te bazezi pe formatul exact al lui
inspectîn teste sau fișiere: se poate schimba între versiuni. Pentru date foloseșteJSON.stringify.
Comenzi înrudite
util.styleText: Colorează și formatează textul afișat în terminal (roșu, verde, bold, subliniat) fără pachete ca chalk.assert (node:assert/strict): Verificări care aruncă o eroare dacă o condiție nu este adevărată: baza testelor cu node:test.REPL (consola node): Consola interactivă Node.js: scrii o expresie, vezi imediat rezultatul. Comenzi .help, .editor, .load, .exit.