スタックトレース ↗ は、アプリケーションで未処理の例外が発生したときに、コードのデバッグに役立ちます。スタックトレースには、呼び出された関数、その順序、行とファイル、引数が表示されます。
ほとんどの JavaScript コードは、本番環境へデプロイする前に、まずバンドルされ、多くの場合トランスパイルされ、さらにミニファイされます。この処理でバンドルが小さくなり、性能が最適化されます。必要に応じて、TypeScript から JavaScript への変換も行われます。
ソースマップは、コンパイルおよびミニファイされたコードを、元のコードへ戻します。ソースマップは、JavaScript ランタイムが返すスタックトレースと組み合わせて、スタックトレースを表示します。
ソースマップを有効にするには、Worker の Wrangler 設定 に次を追加します。
{
"upload_source_maps": true
}upload_source_maps = trueupload_source_maps を true にすると、wrangler deploy または wrangler versions deploy の実行時に、Wrangler がソースマップファイルを自動生成してアップロードします。
Worker がキャッチされない例外をスローすると、ソースマップを取得し、例外のスタックトレースを Worker の元のソースコードの行へ対応付けます。
スタックトレースは、リアルタイムログ のストリーミング時、または Tail Workers で確認できます。
Cloudflare がスタックトレースを Worker のソースマップへ対応付けるときは、行ごとにできるだけ多く再マップします。何らかの理由でスタックトレースのある行を再マップできない場合、その行は変更せず、次の行へ進みます。
| 説明 | 上限 |
|---|---|
| ソースマップの最大サイズ | gzip 圧縮後 15 MB |
簡単なプロジェクトを考えます。src/index.ts がアプリケーションのエントリポイントで、src/calculator.ts は基本的な四則演算をサポートする ComplexCalculator クラスを定義します。
- wrangler.jsonc
- tsconfig.json
- src
- calculator.ts
- index.ts
ComplexCalculator クラスのエラーをデバッグするとき、ソースマップがどのように役立つかを見てみます。
ソースマップをアップロードしていない場合: JavaScript が 1 ファイルに minify されているため、スタックトレースにファイル名がなく、行番号が正しくなく、ts ではなく js を誤って参照します。
ソースマップをアップロードした場合: すべてのメソッドが正しいファイルと行番号を参照します。
- Tail Workers - Tail Workers を接続してログを変換し、HTTP エンドポイントへ送る方法を学びます。
- リアルタイムログ - Workers のログをリアルタイムで取得する方法を学びます。
- RPC のエラー処理 - RPC(Remote Procedure Call)越しの例外の扱いを学びます。