Как скрыть внутреннюю ошибку трассировки стека в Node.js по умолчанию? - PullRequest
3 голосов
/ 14 января 2020

Я только хочу отобразить строку TypeError ниже, но скрыть все внутренние детали (все следующие 7 строк начинаются с at).

 ~/Desktop/Practice> node "c:\Users\User\Practice\PracJS.js"
c:\Users\User\Practice\PracJS.js:6
let b = duck.prototype.isPrototypeOf(Bird)
                       ^
TypeError: Cannot read property 'isPrototypeOf' of undefined
    at Object.<anonymous> (c:\Users\User\Practice\PracJS.js:6:24)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)        
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)     
    at internal/main/run_main_module.js:17:11

Я знаю, что могу сделать это с Error.stackTraceLimit = 0 путем включения его в файл. Но я хочу сделать это по умолчанию.

Есть ли способ указать Node файл конфигурации (настройка Error.stackTraceLimit = 0 внутри), чтобы всякий раз, когда я запускаю node PracJS.js (внутри VSCode), чтобы он автоматически применялся Error.stackTraceLimit = 0?

Любая помощь приветствуется! Спасибо!

1 Ответ

5 голосов
/ 14 января 2020

Вы можете использовать флаг --stack-trace-limit при запуске файла javascript. поэтому в вашем случае

node --stack-trace-limit=0 "c:\Users\User\Practice\PracJS.js"

ИЛИ

export NODE_OPTIONS='--stack-trace-limit=0'

Стоит также упомянуть использование NODE_ENV для подобных случаев. Некоторые из хороших пакетов (Express et c) используют эту переменную для управления этими вещами. поэтому в основном установите NODE_ENV=production, и вы также можете использовать это для управления трассировкой стека в вашем коде.

...