fix: add defensive checks for undefined args parameter
- Add check for args being undefined or not an array in formatMessage - Add default empty array parameter to log method - Prevents 'Cannot read property length of undefined' error - Fixes issue when logger is called from async callbacks in React Native
This commit is contained in:
@@ -93,7 +93,8 @@ export class LoggerComponent implements ILoggerComponent {
|
||||
|
||||
// Format the main message
|
||||
let formattedMessage = message;
|
||||
if (args.length > 0) {
|
||||
// Defensive check: ensure args is defined and is an array
|
||||
if (args && Array.isArray(args) && args.length > 0) {
|
||||
// Handle object arguments
|
||||
const argStrings = args.map((arg) => {
|
||||
// Special handling for Error objects
|
||||
@@ -122,10 +123,10 @@ export class LoggerComponent implements ILoggerComponent {
|
||||
return `${COLORS.DIM}[${timestamp}]${COLORS.RESET} ${levelColor}[${levelName}]${COLORS.RESET} ${COLORS.BRIGHT}[${this.context}]${COLORS.RESET} ${formattedMessage}`;
|
||||
}
|
||||
|
||||
private log(level: LogLevel, message: string, args: unknown[]): void {
|
||||
private log(level: LogLevel, message: string, args: unknown[] = []): void {
|
||||
if (level < this.level) return;
|
||||
|
||||
const formattedMessage = this.formatMessage(level, message, args);
|
||||
const formattedMessage = this.formatMessage(level, message, args || []);
|
||||
|
||||
switch (level) {
|
||||
case LogLevel.TRACE:
|
||||
|
||||
Reference in New Issue
Block a user