第4章 Node.js ベースのアプリケーションのデバッグ
このセクションでは、Node.js ベースのアプリケーションのデバッグと、ローカルデプロイメントとリモートデプロイメントの両方でデバッグロギングを使用する方法を説明します。
4.1. リモートのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをリモートでデバッグするには、デバッグモードで起動し、デバッガーを割り当てる必要があります。
4.1.1. アプリケーションのローカルでの起動およびネイティブデバッガーの割り当て リンクのコピーリンクがクリップボードにコピーされました!
ネイティブデバッガーを使用すると、ビルトインデバッグクライアントを使用して Node.js ベースのアプリケーションをデバッグできます。
前提条件
- デバッグするアプリケーション。
手順
デバッガーを有効にしてアプリケーションを起動します。
ネイティブデバッガーは自動的に割り当てられ、デバッグプロンプトを提供します。
デバッガーが有効になっているサンプルアプリケーション
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに別のエントリーポイントがある場合は、コマンドを変更してそのエントリーポイントを指定する必要があります。
node inspect path/to/entrypoint
$ node inspect path/to/entrypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、express generator を使用してアプリケーションを作成する場合、エントリーポイントはデフォルトで
./bin/wwwに設定されます。REST API Level 0 example application などのサンプルの一部は、エントリーポイントとして./bin/wwwを使用します。- デバッガープロンプトを使用して デバッグコマンド を実行します。
4.1.2. アプリケーションをローカルに起動して V8 インスペクターをアタッチする リンクのコピーリンクがクリップボードにコピーされました!
V8 インスペクターを使用すると、Chrome Debugging Protocol を使用する Chrome DevTools などの他のツールを使用して Node.js ベースのアプリケーションをデバッグできます。
前提条件
- デバッグするアプリケーション。
- Google Chrome ブラウザーで 提供されるような V8 インスペクターがインストールされている。
手順
V8 インスペクターの統合を有効にして アプリケーションを起動します。
node --inspect app.js
$ node --inspect app.jsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションに別のエントリーポイントがある場合は、コマンドを変更してそのエントリーポイントを指定する必要があります。
node --inspect path/to/entrypoint
$ node --inspect path/to/entrypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、express generator を使用してアプリケーションを作成する場合、エントリーポイントはデフォルトで
./bin/wwwに設定されます。REST API Level 0 example application などのサンプルの一部は、エントリーポイントとして./bin/wwwを使用します。V8 インスペクターをアタッチし、デバッグコマンドを実行します。
たとえば、Google Chrome を使用している場合は、以下のようになります。
-
chrome://inspectに移動します。 - 以下の リモートターゲット からアプリケーションを選択します。
- これで、アプリケーションのソースを確認し、デバッグアクションを実行できるようになりました。
-
4.1.3. デバッグモードでの OpenShift でのアプリケーションの起動 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift で Node.js ベースのアプリケーションをリモートでデバッグするには、コンテナー内で NODE_ENV 環境変数を development に設定し、リモートデバッガーからアプリケーションに接続できるようにポート転送を設定する必要があります。
前提条件
- アプリケーションが OpenShift で実行している。
-
ocバイナリーがインストールされている。 -
ターゲット OpenShift 環境で
oc port-forwardコマンドを実行できる。
手順
ocコマンドを使用して、利用可能なデプロイメント設定を一覧表示します。oc get dc
$ oc get dcCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションのデプロイメント設定の
NODE_ENV環境変数をdevelopmentに設定して、デバッグを有効にします。以下に例を示します。oc set env dc/MY_APP_NAME NODE_ENV=development
$ oc set env dc/MY_APP_NAME NODE_ENV=developmentCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定変更時に自動的に再デプロイするように設定されていない場合は、アプリケーションを再デプロイします。以下に例を示します。
oc rollout latest dc/MY_APP_NAME
$ oc rollout latest dc/MY_APP_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルマシンからアプリケーション Pod へのポート転送を設定します。
現在実行中の Pod を一覧表示し、アプリケーションが含まれる Pod を検索します。
oc get pod
$ oc get pod NAME READY STATUS RESTARTS AGE MY_APP_NAME-3-1xrsp 0/1 Running 0 6s ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポート転送を設定します。
oc port-forward MY_APP_NAME-3-1xrsp $LOCAL_PORT_NUMBER:5858
$ oc port-forward MY_APP_NAME-3-1xrsp $LOCAL_PORT_NUMBER:5858Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
$LOCAL_PORT_NUMBERはローカルマシンで選択した未使用のポート番号になります。リモートデバッガー設定のこの番号を覚えておいてください。
V8 インスペクターをアタッチし、デバッグコマンドを実行します。
たとえば、Google Chrome を使用している場合は、以下のようになります。
-
chrome://inspectに移動します。 - Configure をクリックします。
-
127.0.0.1:$LOCAL_PORT_NUMBERを追加します。 - Done をクリックします。
- 以下の リモートターゲット からアプリケーションを選択します。
- これで、アプリケーションのソースを確認し、デバッグアクションを実行できるようになりました。
-
デバッグが完了したら、アプリケーション Pod の
NODE_ENV環境変数の設定を解除します。以下に例を示します。oc set env dc/MY_APP_NAME NODE_ENV-
$ oc set env dc/MY_APP_NAME NODE_ENV-Copy to Clipboard Copied! Toggle word wrap Toggle overflow