デバッグ
このドキュメントでは、VS Code デバッガーまたはChrome 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://127.0.0.1:3000"
},
{
"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}"
}
}
]
}
npm run dev
は、Yarn を使用している場合は yarn dev
、pnpm を使用している場合は pnpm dev
に置き換えることができます。
アプリケーションの起動ポート番号を変更している場合は、https://127.0.0.1:3000
の 3000
を、代わりに使用しているポートに置き換えてください。
ルート以外のディレクトリから Next.js を実行している場合(たとえば、Turborepo を使用している場合)は、サーバーサイドおよびフルスタックのデバッグタスクに cwd
を追加する必要があります。たとえば、"cwd": "${workspaceFolder}/apps/web"
のようにします。
次に、デバッグパネル(Windows/Linux では Ctrl+Shift+D
、macOS では ⇧+⌘+D
)に移動し、起動構成を選択してから、F5
キーを押すか、コマンドパレットから デバッグ: デバッグの開始 を選択してデバッグセッションを開始します。
Jetbrains WebStorm でのデバッガーの使用
ランタイム構成を一覧表示するドロップダウンメニューをクリックし、構成の編集...
をクリックします。https://127.0.0.1:3000
をURLとするJavaScript デバッグ
デバッグ構成を作成します。お好みに合わせてカスタマイズし(例:デバッグ用のブラウザ、プロジェクトファイルとして保存)、OK
をクリックします。このデバッグ構成を実行すると、選択したブラウザが自動的に開くはずです。この時点で、デバッグモードで 2 つのアプリケーションが存在することになります。NextJS ノードアプリケーションとクライアント/ブラウザアプリケーションです。
Chrome DevTools を使用したデバッグ
クライアントサイドコード
通常どおり next dev
、npm run dev
、または yarn dev
を実行して開発サーバーを起動します。サーバーが起動したら、Chrome で https://127.0.0.1:3000
(または代替 URL)を開きます。次に、Chrome のデベロッパーツールを開き(Windows/Linux では Ctrl+Shift+J
、macOS では ⌥+⌘+I
)、ソースタブに移動します。
クライアントサイドのコードがdebugger
ステートメントに到達すると、コードの実行が一時停止し、そのファイルがデバッグ領域に表示されます。また、Windows/LinuxではCtrl+P
、macOSでは⌘+P
を押してファイルを検索し、手動でブレークポイントを設定することもできます。ここで検索する際、ソースファイルのパスはwebpack://_N_E/./
で始まることに注意してください。
サーバーサイドコード
Chrome DevToolsでサーバーサイドのNext.jsコードをデバッグするには、基盤となるNode.jsプロセスに--inspect
フラグを渡す必要があります。
NODE_OPTIONS='--inspect' next dev
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://127.0.0.1:3000
サーバーが起動したら、Chromeで新しいタブを開き、chrome://inspect
にアクセスすると、Remote TargetセクションにNext.jsアプリケーションが表示されます。アプリケーションの下にあるinspectをクリックして別のDevToolsウィンドウを開き、Sourcesタブに移動します。
ここでのサーバーサイドコードのデバッグは、Chrome DevToolsを使用したクライアントサイドコードのデバッグとほぼ同じように機能します。ただし、Ctrl+P
または⌘+P
でファイルを検索する場合、ソースファイルのパスはwebpack://{application-name}/./
で始まります({application-name}
は、package.json
ファイルに従ってアプリケーション名に置き換えられます)。
Chrome DevToolsでサーバーエラーを検査する
エラーが発生した場合、ソースコードを検査することで、エラーの根本原因を追跡できます。
Next.jsは、開発オーバーレイに緑色のボタンのようなNode.jsロゴを表示します。そのボタンをクリックすると、Chrome DevToolのURLがクリップボードにコピーされ、そのURLで新しいブラウザタブを開いて、Chrome DevToolで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
での高速リフレッシュ時間が大幅に増加することが報告されています。これは既知の問題であり、Next.jsには関係ありませんが、Next.jsの開発に影響を与えます。
詳細情報
JavaScriptデバッガーの使用方法の詳細については、次のドキュメントを参照してください。
お役に立ちましたか?