JavaScript スタックトレース整形

エラーヘッダーとフレームを認識して各トレースを番号付きで整形し、繰り返し発生するエラーは最初の 3 フレームでグループ化します。認識できなかった行もそのまま残ります。

ブラウザ内でローカルに実行
このツールの処理はすべてブラウザ内で行われます。KivTools が入力内容をアップロード・保存したり、外部 API に送信したりすることはありません。
JavaScript スタックトレースNode.js/V8 または Firefox/Safari 形式のスタックトレースを貼り付けてください。解析はこのブラウザー内で行われます。

スタックトレースの整形手順

Node.js、ブラウザーのコンソール、ログファイルのエラー出力を貼り付けてください。ページは入力をトレースごとに分割し、認識した各フレームを関数・ファイル・行・列として表示し、最初の 3 フレームが同じトレースをグループ化します。

整形はこのタブ内で実行されます。入力は送信されず、作業中にページからリクエストは出ません。

  1. 「JavaScript スタックトレース」に 1 件以上のトレースを貼り付けるか、「サンプルを読み込む」で想定形式を確認します。
  2. 「スタックトレースを整形」を押すと、各トレースが番号付きブロックになり、フレームは at 関数 (ファイル:行:列) として書き出されます。
  3. 「エラーグループ」には、最初の 3 フレームが一致するトレースがまとめて数えられ、グループの最上位フレームが表示されます。
  4. 「コピー」または「ダウンロード」で整形結果を取得し、「クリア」で入力・出力・レポートを空にします。
  5. レポートに未認識の行数が出た場合、その行は貼り付けたままの形で出力に残っています。

整形後の出力に表示される内容

解析が認識するヘッダー

トレースは失敗を名指しする行から始まります。メッセージ付きの TypeError:、Uncaught (in promise) TypeError: のようなコンソールのラップ、UnhandledPromiseRejectionWarning:、DOMException:、AggregateError:、および Error / Exception / Warning / Rejection で終わる識別子です。日時とレベルで始まる行(2026-09-17T10:00:00Z ERROR TypeError: ...)や、角括弧のレベル([error] TypeError: ...)もヘッダーとして扱います。

前の行がフレームだった場合、または空行を挟んだ場合に、ヘッダーは新しいトレースを開始します。Node はラップしたエラーを [cause]: Error: ... と書きますが、この行は独立したトレースになり、cause 側のフレームが残ります。

ファイルを持たないフレーム

一般的な 2 つの形式を読み取ります。V8 と Node は at 関数 (ファイル:行:列)、Firefox と Safari は 関数@ファイル:行:列 と書きます。C:\app\index.js:42:11 のような Windows パスも分割されず、短い at ファイル:行:列 と at ファイル:行 の形式も読み取ります。

位置情報のないフレームも破棄しません。at foo (native)、at Array.forEach (<anonymous>)、at async Promise.all (index 0)、at eval (eval at <anonymous> (file.js:1:1), <anonymous>:1:1) をそのまま残します。ターミナルの色コードは除去し、Node の cause ブロックの末尾の波括弧があってもその行のフレームは壊れません。

トレースに属さない行

Node.js v20.11.0 のようなランタイム表示、複数行メッセージの続き、[Vue warn]: ... のようなフレームワーク警告はフレームではないため、トレースの下にそのまま表示され、レポートで件数に入ります。

他言語ランタイムのトレースを独自形式として解析はしません。Java や .NET のフレームは at 名前 (ファイル:行) に似ているため偶然一致することがあり、Python の traceback は通常一致しませんが、いずれの場合もすべての行が出力に残ります。

貼り付けた内容にヘッダーもフレームもない場合、ページはその旨を伝え、結果を作らずにテキストをそのまま返します。

最近使ったツール: