web-dev-qa-db-ja.com

chrome / firefox開発者ツールに似たnode.jsでネットワークを監視する方法は?

クライアント側のJavaScriptアプリケーションを開発する場合、開発者ネットワークパネルはネットワークの問題をデバッグするのに非常に役立ちます

enter image description here

NodeJSアプリケーションを作成する開発者は、nodejsアプリケーションからhttp/httpsサーバーへのネットワークトラフィックをどのように監視しますか?たとえば、次のネットワークトラフィックをデバッグする方法は?

var http = require('http');
var req = http.request ...
req.write ...
req.send()

私のコードはサードパーティのhttpsサーバーを呼び出しているため、wiresharkまたは同様のパケットスニッフィングツールを使用できません。

詳細については、調査しようとしている問題は here です。

編集:

他の言語で同じことを行う方法を尋ねる同様の質問を次に示します。

32
Chris Snow

きれいではないことは承知していますが、リクエストコール内でコンソールのレスポンスヘッダーのコンテンツをいつでも出力できます。

var req = https.request(options, function(res) {
    console.log("statusCode: ", res.statusCode);
    console.log("headers: ", res.headers);

    res.on('data', function(d) {
        process.stdout.write(d);
    });
});

ただし、元の質問はサーバー側の問題ではなく、ノードコード自体の問題であったため、ここではあまり役に立ちません。

1
HeadCode

外部HTTPデバッグツールを使用します。次のオプションがあります。

それらの1つを起動し、トラフィックのルーティング先を伝え、アプリケーションを実サーバーではなくそのデバッグプロキシに向けます。

8
OhJeez

類似の何かを探してこの質問に来ましたが、requestパッケージを使用しています。この場合、コードに次の行を含めるだけで済みます。

require('request-debug')(request);

(request-debugパッケージがインストールされていることを確認してください)

これにより、すべての要求データがコンソールに出力されます。

4
LucasSeveryn

ノード8より前のノードバージョンを使用している場合、私はノードインスペクターの大ファンです。

https://github.com/node-inspector/node-inspector

探しているものはすべて揃っていると思います: enter image description here

0
pulekies

送信トラフィックのURLとその原因のみを確認する必要がある場合は、debugging-aid

npm i -D debugging-aid
node --require debugging-aid/network app.js 

結果のコンソール出力は次のようになります。

[aid] network, outgoing  to: http://example.com/
 stack:     at Agent.createSocket (_http_agent.js:234:26)
    at Agent.addRequest (_http_agent.js:193:10)
    at new ClientRequest (_http_client.js:277:16)
    at Object.request (http.js:44:10)
    at Request.start (myapp-path/node_modules/request/request.js:751:32)
    at Request.end (myapp-path/node_modules/request/request.js:1511:10)
[aid] network, outgoing  to: http://example.com/
 stack:     at Agent.createSocket (_http_agent.js:234:26)
    at Agent.addRequest (_http_agent.js:193:10)
    at new ClientRequest (_http_client.js:277:16)
    at Object.request (http.js:44:10)
    at get (myapp-path/node_modules/got/source/request-as-event-emitter.js:234:22)
    at Immediate.<anonymous> (myapp-path/node_modules/got/source/request-as-event-emitter.js:305:10)

免責事項:

私はデバッグエイドの著者です
この回答は、debug-aidがバージョン0.2.1のときに書かれました。

0
naugtur