デバッグ
このドキュメントでは、VS Codeデバッガー、Chrome DevTools、またはFirefox DevToolsを使用して、Next.jsのフロントエンドおよびバックエンドコードを完全なソースマップサポートでデバッグする方法を説明します。
Node.jsにアタッチできるデバッガーはすべて、Next.jsアプリケーションのデバッグにも使用できます。詳細については、Node.jsのデバッグガイドを参照してください。
VS Codeでのデバッグ
プロジェクトのルートに.vscode/launch.json
という名前のファイルを作成し、以下の内容を記述します
{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: debug server-side",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev"
},
{
"name": "Next.js: debug client-side",
"type": "chrome",
"request": "launch",
"url": "https://:3000"
},
{
"name": "Next.js: debug client-side (Firefox)",
"type": "firefox",
"request": "launch",
"url": "https://:3000",
"reAttach": true,
"pathMappings": [
{
"url": "webpack://_N_E",
"path": "${workspaceFolder}"
}
]
},
{
"name": "Next.js: debug full stack",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/.bin/next",
"runtimeArgs": ["--inspect"],
"skipFiles": ["<node_internals>/**"],
"serverReadyAction": {
"action": "debugWithEdge",
"killOnServerStop": true,
"pattern": "- Local:.+(https?://.+)",
"uriFormat": "%s",
"webRoot": "${workspaceFolder}"
}
}
]
}
注: VS CodeでFirefoxデバッグを使用するには、Firefox Debugger拡張機能をインストールする必要があります。
npm run dev
は、Yarnを使用している場合は yarn dev
に、pnpmを使用している場合は pnpm dev
に置き換えることができます。
「Next.js: debug full stack」設定では、serverReadyAction.action
はサーバーの準備ができたときに開くブラウザを指定します。debugWithEdge
はEdgeブラウザを起動することを意味します。Chromeを使用している場合は、この値をdebugWithChrome
に変更してください。
アプリケーションが起動するポート番号を変更している場合は、https://:3000
の3000
を使用しているポートに置き換えてください。
ルート以外のディレクトリからNext.jsを実行している場合(例えば、Turborepoを使用している場合)は、サーバーサイドおよびフルスタックのデバッグタスクにcwd
を追加する必要があります。例: "cwd": "${workspaceFolder}/apps/web"
。
デバッグパネル(Windows/LinuxではCtrl+Shift+D
、macOSでは⇧+⌘+D
)に移動し、起動構成を選択し、F5
を押すか、コマンドパレットから「デバッグ: デバッグの開始」を選択してデバッグセッションを開始します。
Jetbrains WebStormでのデバッガーの使用
実行構成を一覧表示するドロップダウンメニューをクリックし、「構成の編集...」をクリックします。URLをhttps://:3000
としてJavaScript Debugデバッグ構成を作成します。好みに合わせてカスタマイズ(例: デバッグ用ブラウザ、プロジェクトファイルとして保存)し、「OK」をクリックします。このデバッグ構成を実行すると、選択したブラウザが自動的に開くはずです。この時点で、Next.jsノードアプリケーションとクライアント/ブラウザアプリケーションの2つのアプリケーションがデバッグモードになっているはずです。
ブラウザDevToolsでのデバッグ
クライアントサイドのコード
next dev
、npm run dev
、またはyarn dev
を実行して、通常どおり開発サーバーを起動します。サーバーが起動したら、お好みのブラウザでhttps://:3000
(または別のURL)を開きます。
Chromeの場合
- Chromeの開発者ツールを開きます(Windows/Linuxでは
Ctrl+Shift+J
、macOSでは⌥+⌘+I
) - 「Sources」タブに移動します
Firefoxの場合
- Firefoxの開発者ツールを開きます(Windows/Linuxでは
Ctrl+Shift+I
、macOSでは⌥+⌘+I
) - 「Debugger」タブに移動します
どちらのブラウザでも、クライアントサイドのコードがdebugger
文に到達すると、コードの実行が一時停止し、そのファイルがデバッグエリアに表示されます。ファイル名を検索して手動でブレークポイントを設定することもできます
- Chromeの場合: Windows/Linuxでは
Ctrl+P
、macOSでは⌘+P
を押します - Firefoxの場合: Windows/Linuxでは
Ctrl+P
、macOSでは⌘+P
を押すか、左パネルのファイルツリーを使用します
検索時、ソースファイルのパスはwebpack://_N_E/./
で始まることに注意してください。
サーバーサイドのコード
ブラウザDevToolsでサーバーサイドのNext.jsコードをデバッグするには、基盤となるNode.jsプロセスに--inspect
フラグを渡す必要があります
NODE_OPTIONS='--inspect' next dev
補足:
NODE_OPTIONS='--inspect=0.0.0.0'
を使用すると、Dockerコンテナでアプリを実行している場合など、localhost以外からのリモートデバッグアクセスを許可できます。
npm run dev
またはyarn dev
を使用している場合は、package.json
のdev
スクリプトを更新する必要があります
{
"scripts": {
"dev": "NODE_OPTIONS='--inspect' next dev"
}
}
--inspect
フラグ付きでNext.js開発サーバーを起動すると、次のようになります
Debugger listening on ws://127.0.0.1:9229/0cf90313-350d-4466-a748-cd60f4e47c95
For help, see: https://node.dokyumento.jp/en/docs/inspector
ready - started server on 0.0.0.0:3000, url: https://:3000
Chromeの場合
- 新しいタブを開き、
chrome://inspect
にアクセスします - 「Configure...」をクリックして、両方のデバッグポートがリストされていることを確認します
- まだ存在しない場合は、
localhost:9229
とlocalhost:9230
の両方を追加します - 「Remote Target」セクションでNext.jsアプリケーションを探します
- 「inspect」をクリックして、別のDevToolsウィンドウを開きます
- 「Sources」タブに移動します
Firefoxの場合
- 新しいタブを開き、
about:debugging
にアクセスします - 左側のサイドバーで「This Firefox」をクリックします
- 「Remote Targets」の下で、Next.jsアプリケーションを見つけます
- 「Inspect」をクリックしてデバッガーを開きます
- 「Debugger」タブに移動します
サーバーサイドコードのデバッグは、クライアントサイドデバッグと似ています。ファイルを検索する際(Ctrl+P
/⌘+P
)、ソースファイルのパスはwebpack://{application-name}/./
で始まります({application-name}
はpackage.json
ファイルに従ってアプリケーションの名前に置き換えられます)。
ブラウザDevToolsでサーバーエラーを検査する
エラーに遭遇した場合、ソースコードを検査することでエラーの根本原因を特定するのに役立ちます。
Next.jsは、エラーオーバーレイ上のNext.jsバージョンインジケーターの下にNode.jsアイコンを表示します。そのアイコンをクリックすると、DevToolsのURLがクリップボードにコピーされます。そのURLを使って新しいブラウザタブを開き、Next.jsサーバープロセスを検査できます。
Windowsでのデバッグ
Windowsユーザーは、NODE_OPTIONS='--inspect'
の構文がWindowsプラットフォームでサポートされていないため、問題に遭遇する可能性があります。これを回避するには、cross-env
パッケージを開発依存関係としてインストールし(npmとyarnでは-D
)、dev
スクリプトを次のように置き換えます。
{
"scripts": {
"dev": "cross-env NODE_OPTIONS='--inspect' next dev"
}
}
cross-env
は、どのプラットフォーム(Mac、Linux、Windowsを含む)を使用しているかに関わらずNODE_OPTIONS
環境変数を設定し、デバイスやオペレーティングシステム間で一貫したデバッグを可能にします。
補足: マシン上のWindows Defenderを無効にしてください。この外部サービスは「すべてのファイル読み取り」をチェックするため、
next dev
でのFast Refreshの時間が大幅に増加することが報告されています。これはNext.jsとは関係ありませんが、Next.jsの開発に影響を与える既知の問題です。
詳細情報
JavaScriptデバッガーの使用方法の詳細については、以下のドキュメントを参照してください
お役に立ちましたか?