Следующая ошибка убивает мое приложение в производстве:
/usr/src/app/node_modules/@nestjs/common/services/console-logger.service.js:137
? `${this.colorize('Object:', logLevel)}\n${JSON.stringify(message, (key, value) => typeof value === 'bigint' ? value.toString() : value, 2)}\n`
^
TypeError: Converting circular structure to JSON
--> starting at object with constructor 'ClientRequest'
| property 'socket' -> object with constructor 'Socket'
--- property '_httpMessage' closes the circle
at JSON.stringify (<anonymous>)
at ConsoleLogger.stringifyMessage (/usr/src/app/node_modules/@nestjs/common/services/console-logger.service.js:137:62)
at ConsoleLogger.formatMessage (/usr/src/app/node_modules/@nestjs/common/services/console-logger.service.js:130:29)
at /usr/src/app/node_modules/@nestjs/common/services/console-logger.service.js:122:43
at Array.forEach (<anonymous>)
at ConsoleLogger.printMessages (/usr/src/app/node_modules/@nestjs/common/services/console-logger.service.js:117:18)
at ConsoleLogger.error (/usr/src/app/node_modules/@nestjs/common/services/console-logger.service.js:44:14)
at Logger.error (/usr/src/app/node_modules/@nestjs/common/services/logger.service.js:34:75)
at Logger.descriptor.value (/usr/src/app/node_modules/@nestjs/common/services/logger.service.js:163:27)
at ExceptionsHandler.handleUnknownError (/usr/src/app/node_modules/@nestjs/core/exceptions/base-exception-filter.js:54:43)
Я не могу воспроизвести его при разработке и не знаю, что вызывает эту ошибку. Есть ли способ сделать так, чтобы трассировка стека включала источник этой ошибки?
Я уже запускал его с помощью DEBUG=*
, но это не дает мне окончательного ответа.
Я думаю, что ошибка происходит рядом с этими строками (на основе журналов), но я не могу точно сказать:
this.logger.error(error.toString())
throw new InternalServerErrorException(error.toString())
Кажется, это не связано, потому что error.toString()
оценивается как [object Object]
(бесполезно, но правильно).
Основываясь на свойствах, похоже, что AxiosError или какая-либо другая ошибка HTTP-клиента была вызвана напрямую, без преобразования в HttpException, которое Nest знал бы, как обрабатывать, а затем Nest попытался выйти из системы. ошибка. Я бы проверил, как вы используете HttpService
(если вы его используете) или любые другие HTTP-клиенты, которые вы используете. Если вы по-прежнему ничего не можете найти, я бы посоветовал использовать другой регистратор, отличный от Nest, который может обрабатывать циклический JSON. Я предпочитаю ogma , но я также являюсь его автором. пино еще один хороший выбор
Большое спасибо, Джей! Я заменил ConsoleLogger на ogma (отлично!). Ошибка по-прежнему загадочна, поскольку она еще не появилась (я не знаю, как ее вызвать), но, по крайней мере, я могу исследовать ее без сбоя моего приложения.