V určitých prostředích můžete nakonfigurovat délku trasování zásobníku chyb

Ladění aplikací JavaScript může být obtížné. Dnes jsem četl článek o ladění funkčního JavaScriptu a našel jsem šikovný drobný detail.

Předpokládejme, že došlo k chybě hluboko uvnitř vaší aplikace.

main();

function main() {
  one();
}

function one() {
  two();
}

function two() {
  three();
}

// you get the idea :)

function ten () {
  eleven()
}

function eleven () {
  throw new Error("I can't see the whole stack strace")
}

Když to provedete v Chrome nebo Node.js, vytiskne se do konzole následující trasování zásobníku.

Uncaught Error: I can't see the whole stack strace
    at eleven (<anonymous>:49:9)
    at ten (<anonymous>:45:3)
    at nine (<anonymous>:41:3)
    at eight (<anonymous>:37:3)
    at seven (<anonymous>:33:3)
    at six (<anonymous>:29:3)
    at five (<anonymous>:25:3)
    at four (<anonymous>:21:3)
    at three (<anonymous>:17:3)
    at two (<anonymous>:13:3)

Jak vidíte první dvě volání funkcí (main a one ) trasování zásobníku jsou vynechány. Ukázalo se, že délku vytištěného trasování zásobníku můžete nakonfigurovat pomocí Error.stackTraceLimit . Tato konfigurace vám umožňuje obohatit protokolování, když čelíte chybě skryté hluboko ve vaší aplikaci.

Error.stackTraceLimit = 20;

Když tuto hodnotu zvýšíte, uvidíte protokolované celé trasování.

Uncaught Error: I can't see the whole stack strace
    at eleven (<anonymous>:50:9)
    at ten (<anonymous>:46:3)
    at nine (<anonymous>:42:3)
    at eight (<anonymous>:38:3)
    at seven (<anonymous>:34:3)
    at six (<anonymous>:30:3)
    at five (<anonymous>:26:3)
    at four (<anonymous>:22:3)
    at three (<anonymous>:18:3)
    at two (<anonymous>:14:3)
    at one (<anonymous>:10:3)
    at main (<anonymous>:6:3)
    at <anonymous>:2:1

Pokud používáte Error.stackTraceLimit musíte si být vědomi toho, že jde o nestandard podle MDN a rychlá kontrola odhalí, že to není podporováno ani ve Firefoxu. Nekontroloval jsem Edge.

Chrome a Safari to také podporují, ale používají jiné výchozí hodnoty. Chrome přichází s 10 a Safari s 100 . Když se rozhlédnete kolem sebe, uvidíte také, že CodeSandbox zvyšuje limit na 50 .

Podle mého názoru není tato konfigurace nic převratného, ​​ale může se někdy hodit, až budu ladit velkou JS aplikaci v prohlížeči nebo aplikaci Node.js. Nicméně nenahradí debugger. :)