Как отслеживать сеть на node.js, аналогично инструментам разработчика chrome/firefox?
При разработке приложений javascript на стороне клиента сетевая панель разработчика неоценима для отладки сетевых проблем:
![enter image description here]()
Как разработчик, создающий приложение NodeJS, отслеживает сетевой трафик от приложения nodejs на сервере http/https? Например, как отладить следующий сетевой трафик?
var http = require('http');
var req = http.request ...
req.write ...
req.send()
Мой код совершает звонок на сторонний https-сервер, поэтому я не могу использовать инструменты wirehark или подобные инструменты для обнуления пакетов.
Для получения дополнительной информации проблема, которую я пытаюсь исследовать, здесь.
EDIT:
Вот похожие вопросы, которые задают вопрос о том, как сделать то же самое на других языках:
Ответы
Ответ 1
Я знаю, что это не очень, но вы всегда можете выводить содержимое заголовков ответов на консоли внутри вашего запроса:
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);
});
});
Однако ваш первоначальный вопрос не касался проблем с серверной частью, а проблема с самим кодом node, поэтому здесь это было бы не очень полезно.
Ответ 2
Используйте внешний инструмент отладки HTTP. Ваши варианты включают в себя:
Вы запускаете один из них, сообщаете им, куда направлять трафик, и указываете свое приложение на этом отладочном прокси вместо реального сервера.
Ответ 3
Я пришел к этому вопросу в поисках чего-то подобного, но я использую пакет request
. В этом случае все, что вам нужно сделать, это включить эту строку в свой код:
require('request-debug')(request);
(убедитесь, что пакет запроса-отладки установлен)
Это приведет к печати всех данных запроса на консоли.
Ответ 4
Если вы используете версию node раньше, чем node 8, я большой поклонник node -spector:
https://github.com/node-inspector/node-inspector
Я считаю, что у него есть все, что вы ищете:
![введите описание изображения здесь]()
Ответ 5
Если вам нужно только увидеть 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)
Отказ от ответственности:
Я автор помощи отладки
Этот ответ был написан, когда помощь отладки была на версии 0.2.1