ここでは、「ソースマップ付きで TypeScript や Babel 変換後のコードをブラウザでデバッグする方法」を、
🔰 初心者向けにステップごとで分かりやすく解説します。
そもそも「ソースマップ」って何?
TypeScript や Babel を使うと、実際にブラウザで動くのは 変換後(トランスパイル後)の JavaScript です。
たとえば:
TypeScript ソース
// app.ts
function greet(name: string) {
console.log(`Hello, ${name}!`);
}
greet("Halu");
TypeScriptコンパイル後の JS
"use strict";
function greet(name) {
console.log("Hello, " + name + "!");
}
greet("Halu");
// ↓ このように変換される
//# sourceMappingURL=app.js.map
JavaScriptこの //# sourceMappingURL=app.js.map が「ソースマップ」へのリンクです。
ソースマップの役割
- 「変換前の TypeScript(または ESNext)」と「変換後の JavaScript」 の対応関係を記録した地図ファイル。
- ファイル名は
app.js.mapのようになります。 .mapファイルを読み込めば、ブラウザ開発ツールで TypeScript そのままを表示・デバッグできるようになります。
つまり:
コンパイル後の難読化された JS を読む必要がなくなり、
VSCode や Chrome の DevTools 上で TypeScript の行番号で止められる!
ステップごとの設定方法(TypeScript 編)
① tsconfig.json の設定
まず、TypeScript コンパイル設定でソースマップを出力するようにします。
{
"compilerOptions": {
"target": "ES5",
"outDir": "./dist",
"sourceMap": true
},
"include": ["src/**/*"]
}
JSON→ これで dist/app.js と dist/app.js.map が生成されます。
② ブラウザで確認する
- Chrome などで対象ページを開く
- F12 または Ctrl+Shift+I(Mac: Cmd+Opt+I) で開発ツールを起動
- Sources タブ →
webpack://またはfile://配下にsrc/app.tsが見える - TypeScript ファイル(.ts)の行番号をクリック → ブレークポイント設定
- ページを再読み込み
→ 変換後ではなく「TypeScript ソースの該当行」で停止します!
Babel + Webpack の場合
Babel でトランスパイルしている場合も同じ考え方です。
webpack.config.js 例
module.exports = {
mode: "development",
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: __dirname + "/dist"
},
devtool: "source-map", // ★これが重要!
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: "babel-loader"
}
]
}
};
JavaScript→ devtool: "source-map" により .map ファイルが生成されます。
デバッグの流れ(ブラウザ実践)
1️⃣ ソースを確認
DevTools の「Sources」パネルで、src/ ディレクトリが見えていれば成功。
(Babel で圧縮された bundle.js ではなく、元のコードが見える)
2️⃣ ブレークポイントを設定
TypeScript / ES6 ソースの中で止めたい行にクリックしてブレークポイント。
3️⃣ 実行して停止
ページをリロード or イベントを発火すると、
「変換前のコード行」で止まる!
→ ステップ実行、ウォッチ式(変数の値監視)もそのまま動きます。
よくあるトラブルと対策
| 症状 | 原因 | 対策 |
|---|---|---|
| TypeScriptのコードが見えない | .mapファイルが生成されていない | tsconfig.jsonのsourceMap: trueを確認 |
| 行番号がズレている | ビルド後に圧縮(minify)されている | mode: "development" または devtool: "source-map" を使用 |
| Webpackでソースが展開されない | devtool設定が誤り | "inline-source-map" や "eval-source-map" を試す |
| ファイルパスが崩れている | outputやpublicPathの設定ミス | 実際の出力パスを確認 |
まとめ
| 概念 | 役割 |
|---|---|
| ソースマップ (.map) | 元コード ↔ 実行コードの対応表 |
| try…catch | 実行時エラーを防ぐ仕組み |
| ブレークポイント | 実行を一時停止して変数を確認 |
| ウォッチ | 変数の値を追跡 |
| sourceMap / devtool | ブラウザが TypeScript ソースを認識するための設定 |

