開発プロキシのトラブルシューティング

このガイドを使用して、開発プロキシの一般的な問題を診断して修正します。 症状から始めて、診断の質問に取り組んで解決策を見つけてください。

現象: 開発プロキシが要求をインターセプトしていない

開発プロキシを開始しましたが、アプリの要求が開発プロキシの出力に表示されません。 これらの質問に取り組み、原因を特定します。

開発プロキシは実行されていますか?

開発プロキシが実行されており、要求をインターセプトする準備ができていることを確認します。

注意点:

開発プロキシを起動すると、次のような出力が表示されます。

 info    Dev Proxy API listening on http://127.0.0.1:8897...
 info    Dev Proxy listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

この出力が表示されない場合:

開発プロキシはシステム プロキシとして登録されていますか?

要求を自動的にインターセプトするには、開発プロキシをシステム プロキシとして登録する必要があります。 そうでない場合、アプリの要求は開発プロキシを完全にバイパスします。

macOS で確認する方法:

  1. > Network を開く
  2. アクティブなネットワーク接続を選択する
  3. 詳細に移動 ...>プロキシ
  4. に設定 されているセキュリティで保護された HTTP プロキシ (HTTPS) を探します 127.0.0.1:8000

Windows で確認する方法:

  1. [設定]>Network > インターネット>Proxy を開く
  2. [ 手動プロキシのセットアップ] で、プロキシ サーバーが 〘に設定されていることを確認します。 127.0.0.1:8000

開発プロキシがシステム プロキシとして登録されていない場合:

開発プロキシの構成を確認します。 devproxy config実行して構成ファイルを開き、次のものが含まれていないことを確認します。

{
  "asSystemProxy": false
}

この設定が存在し、 falseに設定されている場合は、削除するか、 trueに設定してから、開発プロキシを再起動します。

正しい URL を監視していますか?

開発プロキシは、 urlsToWatch 構成のパターンに一致する URL への要求のみをインターセプトします。

確認方法:

  1. 監視対象の URL の一覧については、開発プロキシのスタートアップ出力を参照してください
  2. アプリが呼び出している URL と比較する

一般的な問題:

  • ワイルドカードがありません: https://api.example.comhttps://api.example.com/usersと一致しません。 https://api.example.com/* を代わりに使用します。
  • ドメインが間違っている: サブドメインを含むドメイン名を再確認する
  • HTTP と HTTPS: プロトコルが一致していることを確認する

URL パターンをテストするには:

devproxy --urls-to-watch "https://your-api.com/*"

次に、API に要求を行い、Dev Proxy によってログに記録されているかどうかを確認します。

正しい構成ファイルを使用していますか?

開発プロキシは、想定とは異なる構成ファイルを使用している可能性があります。

Dev Proxy が構成ファイルを検索する方法:

  1. --config-fileを指定すると、開発プロキシはそのファイルを使用します。
  2. それ以外の場合、開発プロキシは現在のディレクトリ内の devproxyrc.json を検索します
  3. 見つからない場合、開発プロキシは既定の設定を使用します

使用されている構成ファイルを確認するには:

デバッグ ログを使用して開発プロキシを実行する:

devproxy --log-level debug

読み込まれる構成ファイルを示す出力を探します。

構成ファイルを明示的に指定するには:

devproxy --config-file ./my-config.json

Node.js アプリケーションで開発プロキシを使用していますか?

Node.js では、システム プロキシ設定は自動的に使用されません。 プロキシを明示的に使用するように Node.js アプリを構成する必要があります。

Solution:

global-agent パッケージを使用するか、プロキシを使用するように HTTP ライブラリを構成します。 詳細な手順については、「 Node.js アプリケーションで開発プロキシを使用する 」を参照してください。

グローバル エージェントを使用したクイック修正:

  1. グローバル エージェントをインストールします。

    npm install global-agent
    
  2. アプリのエントリ ポイントに追加します。

    import { bootstrap } from 'global-agent';
    bootstrap();
    
  3. プロキシ環境変数を使用してアプリを起動します。

    NODE_TLS_REJECT_UNAUTHORIZED=0 GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8000 node app.js
    

Windows 上の PowerShell で開発プロキシを使用していますか?

PowerShell では、 Invoke-WebRequest または Invoke-RestMethodで行われた Web 要求に対してシステム プロキシ設定が自動的に使用されることはありません。

Solution:

-Proxy パラメーターを設定して、プロキシを使用するように PowerShell を構成します。

Invoke-WebRequest -Uri "https://api.example.com/data" -Proxy "http://127.0.0.1:8000"

または、セッション全体のプロキシを設定します。

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
$env:HTTP_PROXY = "http://127.0.0.1:8000"

PowerShell 7 以降を使用している場合は、次を使用することもできます。

[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://127.0.0.1:8000")

その他のプラットフォームとフレームワーク

他のプラットフォームを使用している場合は、次のガイドを確認してください。

Platform ガイド
.NET アプリケーション .NET アプリケーションで開発プロキシを使用する
.NET 4.8 アプリケーション .NET 4.8 アプリには特別な構成が必要
Docker コンテナー Docker コンテナーで開発プロキシを使用する
SharePoint Framework SPFx で開発プロキシを使用する

症状: 要求はインターセプトされるが、変更されずに渡される

開発プロキシは出力にリクエストを表示しますが、それらは変更もモックもされず、模擬エラーも返しません。

プラグインは有効になっていますか?

使用するプラグインが構成で有効になっていることを確認します。

確認方法:

構成ファイルを開き、次のことを確認します。

  1. プラグインは、 plugins 配列に一覧表示されます
  2. プラグインには次の機能があります。 "enabled": true
{
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

プラグインの順序は正しいですか?

開発プロキシではプラグインの順序が重要です。 プラグインはリストされている順序で実行され、一部のプラグインは他のプラグインが実行される前に処理を停止する可能性があります。

一般的な問題:

MockResponsePluginする前にGenericRandomErrorPluginがあり、モックが要求と一致する場合、ランダム エラー プラグインは実行されません。

Solution:

要求を処理する順序でプラグインを配置します。 詳細については、「 モック使用時にランダムエラーが発生しない理由」を参照してください。

モック URL パターンは要求と一致しますか?

モック応答の場合、URL パターンは要求 URL と完全に一致する必要があります。

確認すべき事項:

  • クエリ文字列パラメーター: https://api.example.com/users?id=1 が一致しません https://api.example.com/users
  • 末尾のスラッシュ: https://api.example.com/users/https://api.example.com/users と一致しません
  • 大文字と小文字の区別: URL パスでは大文字と小文字が区別されます

要求方法は正しいですか?

モックはメソッド固有です。 GET要求のモックがPOST要求と一致しません。

確認方法:

モック ファイルで、 method プロパティが要求と一致するかどうかを確認します。

{
  "request": {
    "url": "https://api.example.com/users",
    "method": "GET"
  },
  "response": {
    "statusCode": 200,
    "body": { "users": [] }
  }
}

症状: アプリの SSL/証明書エラー

アプリは、開発プロキシを介して要求を行おうとすると、SSL または証明書のエラーが発生します。

Dev Proxy 証明書がインストールされていますか?

開発プロキシは、自己署名証明書を使用して HTTPS トラフィックの暗号化を解除します。 システムはこの証明書を信頼する必要があります。

Solution:

証明書のインストール コマンドを実行します。

devproxy cert ensure

このコマンドは、開発プロキシ証明書をシステムにインストールして信頼します。

証明書は信頼されていますか?

証明書はインストールされている可能性がありますが、信頼されていない可能性があります。

macOS で確認する方法:

  1. キーチェーン アクセスを開く
  2. "Dev Proxy" を検索する
  3. 証明書をダブルクリックします。
  4. 信頼の拡張
  5. Secure Sockets Layer (SSL)Always Trust に設定されていることを確認する

Windows で確認する方法:

  1. certmgr.msc を実行します。
  2. 信頼されたルート証明機関に移動します>Certificates
  3. 開発プロキシ証明書を探す

証明書が信頼されていない場合:

証明書を削除して再インストールします。

devproxy cert remove
devproxy cert ensure

Node.jsを使用していますか?

Node.js では、既定ではシステム証明書ストアは使用されません。 次のいずれかを行う必要があります。

オプション 1: 証明書の検証を無効にする (開発のみ):

NODE_TLS_REJECT_UNAUTHORIZED=0 node app.js

Warnung

運用環境では NODE_TLS_REJECT_UNAUTHORIZED=0 を使用しないでください。 すべての証明書検証が無効になります。

オプション 2: 開発プロキシ証明書を Node.jsに追加する:

開発プロキシ証明書をエクスポートし、 NODE_EXTRA_CA_CERTS 環境変数を設定します。

NODE_EXTRA_CA_CERTS=/path/to/devproxy-cert.pem node app.js

別のランタイムまたはフレームワークを使用していますか?

証明書の処理方法はプラットフォームによって異なります。

Platform 解決策
Python REQUESTS_CA_BUNDLEまたはSSL_CERT_FILE環境変数を使用する
Java を使用して Java キーストアに証明書をインポートする keytool
.NET 証明書は通常、システム ストア経由で信頼されます
Docker 証明書をマウントし、コンテナー内の CA 証明書を更新する

その他の一般的な問題

すべての要求がゲートウェイ タイムアウトで失敗する

原因:

開発プロキシはターゲット API に到達できません。

Solution:

ゲートウェイタイムアウトですべての要求が失敗する理由を参照してください。

Dev Proxy を使用した後にインターネットに接続しない

原因:

開発プロキシがシステム プロキシとして適切に登録解除されない。

Solution:

プロキシを使用した後にインターネット接続が機能しない理由を参照してください。

予期せず 429 件の応答を取得する

原因:

レート制限プラグインが有効になり、構成されます。

Solution:

「429 件の応答を受け取り続ける理由」を参照してください。

データベース エラー

エラー 解決策
SqliteConnection 初期化エラー SQLite の構成を修正する
データベース ディスク イメージが損なわれています。 データベースを再構築する

その他のヘルプを表示する

解決策が見つからない場合:

  1. デバッグ ログを有効にする: devproxy --log-level debug を実行して詳細な出力を行う
  2. 既存の問題を検索する: Dev Proxy GitHub の問題
  3. ヘルプを求める: ヘルプとサポートを受ける

こちらも参照ください