правки

This commit is contained in:
gorbenko.pavel
2026-08-21 09:45:20 +05:00
parent e90a8ea3cc
commit bf706907de
17 changed files with 57 additions and 16 deletions
@@ -52,6 +52,31 @@ export function describeReason(reason: unknown): string {
}
}
// PnPjs/SharePoint кладёт в Error.message текст ответа сервера целиком —
// например: `Error making HttpClient request in queryable [404] ::>
// {"odata.error":{"message":{"value":"Элемент не существует..."}}}`. Пока это
// строка, а не распарсенный JSON, русские буквы в ней остаются как литеральные
// escape-последовательности `Эл...`, и в UI вместо кириллицы видно
// набор из "\u". Достаём odata.error.message.value через JSON.parse — сам
// парсер раскодирует escape-последовательности обратно в текст.
export function friendlyErrorMessage(e: unknown): string {
const message = e instanceof Error ? e.message : String(e);
const start = message.indexOf('{');
const end = message.lastIndexOf('}');
if (start !== -1 && end > start) {
try {
const parsed = JSON.parse(message.slice(start, end + 1)) as {
'odata.error'?: { message?: { value?: string } };
};
const value = parsed['odata.error']?.message?.value;
if (value) return value;
} catch {
// Тело не JSON (или не то, что ожидали) — отдаём исходное сообщение.
}
}
return message;
}
function logError(kind: string, reason: unknown): void {
console.error(`${PREFIX} ${kind}: ${describeReason(reason)}`);
// Стек и объект — отдельными аргументами: так консоль браузера даёт