170 похожих чатов

Добрый день, возможно ли для веб-приложения на node.js оттрасировать

выполнение кода, чтобы получить последовательность вызова функций при обработке веб-запроса?

7 ответов

9 просмотров

ну первое что лезет в голову это просто нодовский отладчик

попробуй написать в какой-нибудь из функций console.trace('') const http = require('http') http.createServer((req, res) => { a() }).listen(3000) function a() { console.trace('') } Trace at a (/home/.../server.js:7:10) at Server.<anonymous> (/home/.../server.js:3:2) at Server.emit (node:events:376:20) at parserOnIncoming (node:_http_server:907:12) at HTTPParser.parserOnHeadersComplete (node:_http_common:126:17)

Также можешь загуглить очень древнюю штуку такую как arguments.callee Она хоть и считается устаревшей, но раньше с ее помощью можно было тоже stacktrace отследить

и еще один вариант function a() { try { throw new Error() } catch(err) { console.log(err.stack) } } Больше ничего не могу вспомнить

однако если у него большая вложенность вызовов функции то думаю обычный пошаговый отладчик лучше будет чем писать в каждом месте console.trace

создать als в роуте. назначить в als каждому запросу uuid, в логер внедрить экземпляр als и логировать его, в функциях использовать данный логгер.

app.use((req, res, next) => { const asyncLocalStorage = diContainer.get<any>(TYPES.AsyncLocalStorage); asyncLocalStorage.run(new Map(), () => { asyncLocalStorage.getStore().set("requestId", uuidv4()); next(); }); });log(...args): void { const date = moment(new Date()).format("DD.MM.YY HH:mm:ss.SSS"); const store = this.asyncLocalStorage.getStore(); const logId = store ? store.get("requestId") : "context-is-lost"; console.log(date, logId, ...args); }можно без di, просто через экспорт.

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Всем привет! Кто нибудь парсил в ручную JSON без библиотек и фреймворков? Есть может ссылки на оптимальный алгоритмы работы с текстом и примеры таких парсеров?
Lem
27
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Добрый день. А shovel'ы можно как-то сконфигурировать в definitions.json? Пробовал что-то вроде: { "users": [ { "name": "agent", "password_hash": "RBCbTzQd...
Aleksey
1
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Карта сайта