ホーム自己紹介ブログ
NO.84
DATE2022. 07. 09

JavaScriptのdebuggerを使ってデバッグしよう (Browser/Node.js/Jest)

JavaScript の標準機能 debugger を使って、デバッグをしましょう。 標準機能なので、React などのライブラリでも使えます。

Browser

次の HTML ファイルを Chrome で開きます。

<button>Button</button>
<script>
  document.querySelector("button").addEventListener("click", () => {
    debugger;
    alert("Hello World");
  });
</script>

開いたページで、DevTools も開いておきます。 その状態で、Button をクリックしましょう。

そうすると、次の画像のようになります。

browser_debugger
browser_debugger

debuggerと書いた箇所で、処理が停止されます。 そのブレークポイントから、ステップイン、ステップアウト、ステップオーバーといった操作ができます。 Console タブで、変数や関数などの実行結果を確認できます。

このように、簡単にデバッグができるようになります。

Node.js

Node.js でも、同様に debugger が使えます。 次の JavaScript コードを用意します。

// main.js
debugger;
console.log("Hello World");

このファイルを次のコマンドで実行します。

node --inspect-brk main.js

実行すると、次の画像のような出力になります。

node_debugger_1
node_debugger_1

その後、Chrome から chrome://inspect にアクセスしてください。 アクセスすると、次の画像の画面になります。

node_debugger_2
node_debugger_2

Open dedicated DevTools for Node を Click したら、次の画像のようになります。

node_debugger_3
node_debugger_3

そうです、さきほどと同じように、debugger の箇所で、処理が停止されます。 簡単ですね。

Jest

テストフレームワークの Jest も、同じように debugger が使えます。 次のテストコードを用意します。

// main.test.js
test("1 equal 1", () => {
  debugger;
  expect(1).toBe(1);
});

このファイルに対して、次のコマンドを実行します。

## mac
node --inspect-brk node_modules/.bin/jest --runInBand main.test.js
## windows
node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand main.test.js

実行すると、次の画像のような出力になります。

jest_debugger_1
jest_debugger_1

また、同じく Chrome からchrome://inspect にアクセスすると、同様にデバッグできます。

jest_debugger_2
jest_debugger_2
jest_debugger_3
jest_debugger_3

Browser,Node.js と同じ使い方になります。 わかりやすいですね。

終わりに

IDE やエディタでデバッグ設定することもできますが、こちらの方が断然楽ですね。

参考

  • developer.mozilla.org
  • https://nodejs.org/ja/docs/guides/debugging-getting-started/
  • jestjs.io
フロントエンド
開発ツール

-

コメント

0

読み込み中...

シェアする

フォローする

購読する

次のページ

GraphQLの歴史

前のページ

ブラウザのレイアウトとペイントを知る

関連する記事

タグ「フロントエンド」の記事

AIの書いたコードの手直しを減らすお作法

AI にコードを書かせた後、余計なコードを見つけて消す作業があります。 不毛なことなので、それらの作業を減らすためのお作法を紹介します。 未使用コードを消す 以下でも書きましたが、未使用コードの検査に knip を使うことが多いです。 ht

2026年02月25日

AI
フロントエンド
iframeの難しさ

最近、iframeを使っています。 クライアントサイドで埋め込む想定で、iframeを使おうとしています。 色々と苦労したことがあったので、書いて残しておこうと思います。 レスポンスヘッダー 前提として、ウェブアプリケーションをプロダクショ

2026年02月18日

フロントエンド
ブラウザ
SVGを書くと数学の知識が必要だった

紙を積んだイラストをSVGで書こうとしていました。 (当たり前ですが)図形を表現するためには数学の知識が必要で、学生の頃の記憶を思い出したので疲れました。 所感について、諸々書こうと思います。 成果物 実際に完成したのは、以下の画像ができま

2026年02月17日

フロントエンド

タグ「開発ツール」の記事

Google Map タイムラインデータをなんとかしたい

以下の記事で書いた通り、Google Map のタイムラインデータが7年分消失しました。 https://silverbirder.github.io/blog/contents/20251123/ こういう経験をすると、データを所有したい

2026年02月28日

開発ツール
Disqusに広告が表示されるようになった

ブログ記事のページ下部に、Disqusを設置しています。 急遽、Disqusの上下に良くわからない広告が大量に表示されるようになりました。 Disqusのメール メールボックスを漁ってみると、以下のメールがありました。 Disqusからのメ

2026年02月06日

開発ツール
DuckDB WASMとOPFSでGoogleマイアクティビティをブラウザ完結で可視化してみた

DuckDB WASMとOrigin Private File System (OPFS) を組み合わせ、Google マイアクティビティの履歴をブラウザ内に閉じたまま扱えるようにしたときの設計と学びを整理しました。

2025年09月17日

開発ツール
ブラウザ
← ブログ一覧へ