エラーメッセージを生成してconsole.error()のようなトレースを取得します[重複]

Dec 13 2020

私がそうするとき、私はconsole.error('Custom Error')それがどこから来たのかについての素晴らしい痕跡を得る

例えば:

func1();

function func1() {
  func2();
}

function func2() {
  func3();
}

function func3() {
  console.error('Custom Error');
}

私は得る:

エラーを発生させずにこれを行うにはどうすればよいconsole.log()ですか?

回答

Danziger Dec 13 2020 at 06:44

のconsole.trace()代わりに使用できますconsole.error()。

これは、コンソールに表示されるものですconsole.trace()

Trace
func3 @ js:24
func2 @ js:19
func1 @ js:15
(anonymous) @ js:12

そしてこれでconsole.error()

Custom Error
console.error   @   snippet-javascript-console.min.js?v=1:1
func3   @   js:23
func2   @   js:19
func1   @   js:15
(anonymous) @   js:12

スタックトレースを単にログに記録するのではなく変数に入れたい場合は、Error.captureStackTrace(targetObject)またはを使用できますError().stackが、どちらも非標準です。

func1();

function func1() {
  func2();
}

function func2() {
  func3();
}

function func3() {
  const fakeErrorObject = {};
  
  Error.captureStackTrace(fakeErrorObject)
  
  const captureStackTraceTrace = fakeErrorObject.stack;
  const errorStackTrace = Error('Foo').stack;
  
  console.log(captureStackTraceTrace.replaceAll('at', '👉'));
  console.log(errorStackTrace.replaceAll('at', '👉'));
}
.as-console-wrapper {
  max-height: none !important;
}