From 9f72d5885e940b5649e9e73d4afe97b7b6c60231 Mon Sep 17 00:00:00 2001 From: innoavvlasov Date: Tue, 14 Oct 2025 11:58:10 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routers/procurement/index.js | 56 +++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/server/routers/procurement/index.js b/server/routers/procurement/index.js index 8425a31..7acbcfa 100644 --- a/server/routers/procurement/index.js +++ b/server/routers/procurement/index.js @@ -19,10 +19,26 @@ router.use(timer()); const loadMockData = (filename) => { try { const filePath = path.join(__dirname, '..', 'mocks', filename); + + // Проверяем существование файла + if (!fs.existsSync(filePath)) { + console.error(`Файл ${filename} не найден по пути: ${filePath}`); + return {}; + } + const data = fs.readFileSync(filePath, 'utf8'); - return JSON.parse(data); + + // Проверяем, что файл не пустой + if (!data || data.trim() === '') { + console.error(`Файл ${filename} пустой`); + return {}; + } + + const parsedData = JSON.parse(data); + console.log(`Успешно загружен файл ${filename}`); + return parsedData; } catch (error) { - console.error(`Ошибка загрузки ${filename}:`, error); + console.error(`Ошибка загрузки ${filename}:`, error.message); return {}; } }; @@ -44,8 +60,22 @@ const generateDate = (daysAgo) => new Date(Date.now() - 86400000 * daysAgo).toIS // Функция для замены плейсхолдеров в данных const processMockData = (data) => { + // Проверяем, что данные существуют + if (data === undefined || data === null) { + console.warn('processMockData: получены undefined или null данные'); + return data; + } + const timestamp = generateTimestamp(); - const processedData = JSON.stringify(data) + const jsonString = JSON.stringify(data); + + // Проверяем, что JSON.stringify вернул валидную строку + if (jsonString === undefined || jsonString === null) { + console.warn('processMockData: JSON.stringify вернул undefined или null'); + return data; + } + + const processedData = jsonString .replace(/{{timestamp}}/g, timestamp) .replace(/{{date-(\d+)-days?}}/g, (match, days) => generateDate(parseInt(days))) .replace(/{{date-1-day}}/g, generateDate(1)) @@ -67,7 +97,12 @@ const processMockData = (data) => { .replace(/{{date-30-days}}/g, generateDate(30)) .replace(/{{date-35-days}}/g, generateDate(35)); - return JSON.parse(processedData); + try { + return JSON.parse(processedData); + } catch (error) { + console.error('processMockData: ошибка при парсинге JSON:', error); + return data; // Возвращаем исходные данные в случае ошибки + } }; // Auth endpoints @@ -77,7 +112,7 @@ router.post('/auth/login', (req, res) => { if (!email || !password) { return res.status(400).json({ error: 'Validation failed', - message: authMocks.errorMessages?.validationFailed || 'Email и пароль обязательны' + message: authMocks?.errorMessages?.validationFailed || 'Email и пароль обязательны' }); } @@ -85,7 +120,16 @@ router.post('/auth/login', (req, res) => { if (password === 'wrong') { return res.status(401).json({ error: 'Unauthorized', - message: authMocks.errorMessages?.invalidCredentials || 'Неверный email или пароль' + message: authMocks?.errorMessages?.invalidCredentials || 'Неверный email или пароль' + }); + } + + // Проверяем, что данные загружены + if (!authMocks?.mockAuthResponse) { + console.error('authMocks.mockAuthResponse не загружен'); + return res.status(500).json({ + error: 'Internal Server Error', + message: 'Ошибка загрузки данных аутентификации' }); }