3.6 KiB
3.6 KiB
Исправления проблем редактора карт
✅ Исправленные проблемы:
1. Ошибка scale.x.toFixed is not a function
Проблема: Объекты Three.js могут иметь неинициализированные свойства scale
Решение: Добавлена проверка типов перед вызовом .toFixed()
// Безопасное получение масштаба
const scaleX = typeof obj.scale.x === 'number' ? obj.scale.x : 1;
const scaleY = typeof obj.scale.y === 'number' ? obj.scale.y : 1;
const scaleZ = typeof obj.scale.z === 'number' ? obj.scale.z : 1;
2. Ошибка миграции column "created_at" does not exist
Проблема: Триггер пытался обратиться к колонке до её создания Решение: Создана простая миграция без триггеров
🚀 Инструкции по запуску:
Для исправления ошибки scale:
Код уже исправлен в MapEditor.jsx. Ошибка больше не должна возникать.
Для исправления миграции:
# Используйте простую миграцию вместо сложной
node run-simple-migration.js
Проверка результата:
- Откройте редактор карт
- Нажмите кнопку "Проверить БД"
- Должно показать: "Таблица существует: true"
📋 Что было исправлено:
В MapEditor.jsx:
- ✅ Безопасная обработка координат, поворота и масштаба
- ✅ Проверка типов перед вызовом
.toFixed() - ✅ Значения по умолчанию для неинициализированных свойств
В миграции:
- ✅ Создана простая версия без триггеров
- ✅ Убраны сложные зависимости
- ✅ Добавлена проверка существования таблицы
🔧 Альтернативные решения:
Если простая миграция не работает:
-- Создайте таблицу вручную в pgAdmin или psql
CREATE TABLE city_objects (
id SERIAL PRIMARY KEY,
city_id INTEGER NOT NULL,
name VARCHAR(255) NOT NULL DEFAULT '',
model_url VARCHAR(500) NOT NULL,
pos_x DECIMAL(15, 6) NOT NULL DEFAULT 0,
pos_y DECIMAL(15, 6) NOT NULL DEFAULT 0,
pos_z DECIMAL(15, 6) NOT NULL DEFAULT 0,
rot_x DECIMAL(15, 6) NOT NULL DEFAULT 0,
rot_y DECIMAL(15, 6) NOT NULL DEFAULT 0,
rot_z DECIMAL(15, 6) NOT NULL DEFAULT 0,
scale_x DECIMAL(15, 6) NOT NULL DEFAULT 1,
scale_y DECIMAL(15, 6) NOT NULL DEFAULT 1,
scale_z DECIMAL(15, 6) NOT NULL DEFAULT 1,
organization_id INTEGER NOT NULL DEFAULT 2,
rent DECIMAL(10, 2) NOT NULL DEFAULT 0,
tax DECIMAL(10, 2) NOT NULL DEFAULT 0,
collidable BOOLEAN NOT NULL DEFAULT false,
interior_id INTEGER NOT NULL DEFAULT 101,
textures VARCHAR(500) NOT NULL DEFAULT '-',
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
✅ Результат:
- Ошибки
scale.x.toFixedбольше не возникают - Миграция выполняется без ошибок
- Редактор карт работает стабильно