Урок 4 из 8 · 20 мин · обновлено

Когда что-то сломалось: как описать ошибку и не потерять рабочее

Как описать ошибку так, чтобы нейросеть её исправила: что делали, что ждали, что получили. Где найти текст ошибки в консоли браузера, как не ломать работающее и когда вернуться к прошлой версии.

Ошибки — нормальная часть работы

Код от нейросети ломается часто. Не потому что вы что-то делаете не так: модель пишет правдоподобный код, но не запускает его и не видит результат. Видите его только вы. Поэтому умение описать ошибку — главный навык вайбкодинга, важнее умения красиво поставить задачу.

Как описать ошибку

Сообщение «не работает» нейросеть не может исправить — она не знает, что именно не работает. Хорошее описание отвечает на три вопроса:

  1. Что вы делали — по шагам: открыл страницу, ввёл «Бег», нажал «Добавить».
  2. Что ожидали — появится новая карточка «Бег».
  3. Что получили — ничего не произошло, карточки нет.

И если есть — текст ошибки из консоли браузера.

Консоль браузера

Многие ошибки не видны на странице: просто «ничего не происходит». Но браузер записывает их в консоль. Откройте её клавишей F12 (на Mac — Cmd + Option + I) и выберите вкладку Console. Красные строки — это ошибки.

Например, после очередного шага кнопка «Добавить» перестала работать, а в консоли такая строка:

Текст
Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')
    at tracker.html:52

Понимать её самому необязательно, хотя смысл простой: код в строке 52 ищет на странице элемент, которого нет, и пытается повесить на него обработчик нажатия. Скопируйте строку целиком и вставьте в запрос:

Текст
Нажимаю «Добавить» с текстом «Бег» — ожидаю новую карточку,
но ничего не происходит. В консоли ошибка:
Uncaught TypeError: Cannot read properties of null
(reading 'addEventListener') at tracker.html:52

Исправь только эту ошибку, остальное не меняй.
Пришли файл целиком.

Скорее всего, нейросеть найдёт причину за один ответ: например, в коде форма ищется по имени add-form, а в разметке у неё имя addForm. Одна буква — и весь сценарий не работает.

Не ломать то, что работает

У нейросетей есть привычка: исправляя одно, «улучшать» заодно другое — менять цвета, переименовывать, переписывать работающие части. Две защиты:

Явная граница в запросе. «Исправь только эту ошибку, остальное не меняй». Звучит очевидно, но заметно снижает число побочных изменений.

Копии рабочих версий. Каждый раз, когда шаг заработал, сохраняйте копию файла: tracker-1.html, tracker-2.html, tracker-3.html. Это ваши точки возврата. Если следующий шаг всё сломал, вы откроете последнюю рабочую версию за секунду, а не будете вспоминать, как было.

Ручные копии хороши для начала. Когда проектов станет больше, их заменит система контроля версий — ей посвящён курс «Git и GitHub» на этом сайте.

Когда нейросеть ходит по кругу

Бывает так: исправление ломает другое место, исправление другого места возвращает первую ошибку, и так по кругу. Код с каждым шагом запутаннее. Правило трёх попыток:

  1. Если три попытки исправить одну и ту же ошибку не помогли — остановитесь.
  2. Откройте последнюю рабочую копию.
  3. Опишите задачу шага заново, проще и конкретнее. Можно в новом чате: вставьте туда рабочий код и задание.

Новый чат помогает, потому что длинная переписка с десятком неудачных версий сбивает нейросеть: она путает, какая версия актуальная.

Попробуйте сами. Откройте свой трекер, откройте консоль клавишей F12 и проверьте, нет ли красных строк. Затем специально сломайте файл: в Блокноте удалите одну закрывающую фигурную скобку в коде внутри <script>, сохраните и обновите страницу. Найдите ошибку в консоли и составьте запрос на исправление по схеме из урока.

Что вы увидите и как может выглядеть запрос

В консоли появится ошибка синтаксиса, например:

Текст
Uncaught SyntaxError: Unexpected end of input

Это значит, что код оборвался раньше, чем закончился: браузер дошёл до конца и не нашёл закрывающую скобку. Трекер при этом может не реагировать на галочки и кнопку.

Запрос:

Текст
Открываю страницу — галочки не реагируют, кнопка «Добавить»
не работает. В консоли: Uncaught SyntaxError: Unexpected end
of input. Найди и исправь только эту ошибку, остальное не меняй.
Пришли файл целиком.

<код файла>

Правда, в этом упражнении проще вернуть рабочую копию — вы ведь сохранили её в прошлом уроке. Так и поступают в жизни: если ошибку только что внесли сами, быстрее откатиться, чем чинить.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Какое описание ошибки поможет нейросети больше всего?

  2. Где найти текст ошибки, если страница молча не работает?

  3. Нейросеть исправила ошибку, но заодно поменяла дизайн, который вам нравился. Как избежать этого в следующий раз?

  4. Третья попытка исправить ошибку снова не помогла, а код стал запутаннее. Что разумно?