Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Коды ошибок и предупреждений

Каждая диагностика Aura имеет стабильный код — по нему удобно искать в CI-логах и ссылаться в обсуждениях. E — ошибка, W — предупреждение (в --strict предупреждения блокируют).

Хост (E00xx)

Возникают на границе между манифестом и приложением, которое его встраивает. У E0001-E0006 нет позиции в исходнике, потому что разбор ещё не начинался; E0007-E0009 указывают на вызов в скрипте (D35).

КодЗначениеКак исправить
E0001хост не смог открыть файл либо aura.lock нечитаемв сообщении — исходная ошибка ввода-вывода
E0002скрипт ничего не экспортирует под этим именемпроверьте имя; экспортом являются только свойства : и pub def
E0003экспорт — не функцияполучите его через get, а не function или call
E0004у функции другое число аргументовпроверяется при привязке функции, до любого вызова
E0005у аргумента нет точного значения в Auraцелое за пределами i64, NaN или бесконечность, байтовая строка; отвергается, а не приводится
E0006результат не подходит под тип хостасообщение называет путь внутри значения, где не совпало
E0007скрипт импортирует или вызывает функцию хоста, которую хост не предоставилмодуль host: предоставляет приложение во время выполнения, поэтому aura eval останавливается здесь; aura check перечисляет, что нужно скрипту
E0008функция хоста вернула ошибкусообщение - от приложения; скрипт не может её обработать
E0009функция хоста вызвана с неверным числом аргументов (при загрузке) или типами (при вызове) либо вернула значение, которого нет в Auraсообщение называет функцию
E0010скрипт вызван изнутри одной из его же функций хостазапрещено (D35): верните значение скрипту
E0011перезагрузка изменила бы экспорт скрипта: экспорт удалён, либо изменился его вид или число аргументовхост мог его привязать, поэтому продолжает работать старая версия (D36); чтобы изменить экспорт, перезапустите приложение

Лексика (E01xx)

КодСмыслКак чинить
E0101после десятичной точки нет цифры (12.)12.0 либо 12
E0102незакрытая строка до конца строкистроки в Aura однострочные; закройте "
E0103целочисленный литерал не помещается в i64
E0104registry-импорт без версииimport a/b@v1 as x — версия обязательна (D8)
E0105неожиданный символ
E0106незакрытая интерполяция #{
E0107незакрытая блочная строказакрыть end на отступе открывающей строки (D16)
E0108разделитель разрядов стоит неверно_ группирует по три от точки: 10_000_000, 0.000_001 — но не 100_, 1__0 и не 2_3_7_1_9_3_3

Синтаксис (E02xx)

КодСмыслКак чинить
E0200ожидался конкретный токентекст ошибки называет какой
E0201инлайн-блок из v1.1 (metrics port: 9090)объектный блок: metrics: … end (D3)
E0203не хватает end / ]
E0204ожидалось выражение
E0205statement’ы разделяются переносами строк
E0206pub не перед def/type/enumсвойства экспортируются сами; = всегда приватен
E0207у cond нет ветки elseдобавить else -> …: каждая ветвь обязана дать значение (D14)
E0208слишком глубокая вложенностьпредел рекурсии, из-за которого глубоко вложенный ввод — ошибка, а не переполнение стека; цепочка вида a + b + c засчитывает свою длину (D42)
E0211член enum — не строка в кавычкахчлены перечисляются строками, по одной на строку (D18)
E0212дубликат члена enumкаждый член указывается один раз
E0213enum без членовпустой набор нельзя удовлетворить
E0214значение вычислено и выброшеноголое выражение не в конце функции никуда не идёт; напишите key:, name = или assert (D40)
E0215в теле есть свойства, и оно же кончается значениемфункция возвращает одно или другое; сделайте значение свойством или уберите свойства (D40)

Выполнение (E03xx)

КодСмыслКак чинить
E0301повторное присваивание — значения иммутабельныновое имя либо вложенный scope
E0302затенение внешней переменной без маркераshadow x = ... (D7)
W0303shadow ничего не затеняетуберите shadow
E0304переполнение целочисленной арифметикиFloat либо пересмотрите величины
E0305деление на ноль
E0306неподходящий тип операндаусловия — строго Bool; «правдивости» нет
E0307в интерполяции/join не скалярсериализуйте явно: .to_json()
E0308неизвестное поле объектаопечатка? .get(key, default) для опциональных
E0309неизвестный методсписок — в справочнике методов; поля-функции пакетов вызываются так же
E0310нет прав (capability)подсказка в ошибке называет нужный флаг (D1)
E0311путь вне разрешённых --allow-read каталогов
E0312функции передано меньше аргументов, чем параметров
E0313ошибка чтения файла (I/O)
E0314некорректный TOML/JSON/YAML при парсинге
E0315методу (map/filter) не передана лямбда
E0316некорректное выражение внутри #{...}
E0317индекс вне границ списка / first()/last() на пустом.get(i, default)
E0318obj["key"] — скобки на объектах запрещеныточечная форма: obj."key" (D11)
E0319некорректная длительностьформат "1h30m", единицы d/h/m/s
E0320некорректная датаRFC3339: "2026-07-18T12:00:00Z"
E0321некорректный base64base64_decode() на входе, который не является base64
E0322склеенный список или строка превышает предел размера+ удваивает: потолок 1M элементов / 16 MiB
E0323to_object() получил один и тот же ключ дваждымолчаливая перезапись зависела бы от порядка элементов; уберите дубли заранее
E0324null выводится как текстинтерполяция и to_str() обязаны совпадать; скажите, что печатать в пустом случае (D31)
E0325вычисление исчерпало бюджет шагов--max-steps его увеличивает, --stats показывает расход (D34); в Script бюджет — на вызов (D33)
E0326вычисление исчерпало бюджет памяти--max-memory его увеличивает; считается каждое созданное значение и кадр (D34)
E0327zip() получил списки разной длинымолча отброшенный хвост унёс бы часть конфигурации; сначала обрежьте длинный через slice (D39)
E0328значение вложено глубже 256 списков и объектовпочти всегда цикл, который на каждом шаге заворачивает результат; стройте уровни рядом, а не друг в друге (D43)
E0398внутреннее: окружение замыкания было освобожденоошибка в Aura — пришлите манифест в issue
E0399вычисление вложено глубже 256 уровнейпочти всегда рекурсивная функция без условия остановки; map, filter и reduce обходят список без вложенности (D42)
E0533now()/timestamp() не существуютвремя передаёт хост: env("BUILD_TIME", ...) (D13)

Модули и пакеты (E04xx)

КодСмыслКак чинить
E0401циклический импорт (цепочка в сообщении)разорвите цикл: общий код — в третий модуль
E0402integrity-хэш пакета не совпал с aura.lockсодержимое пакета изменилось — разберитесь почему
E0403--frozen: записи нет в aura.lockaura add локально, лок — в коммит
E0404модуль не найден / не резолвитсяпуть, версия, --registry-dir
E0410импорт передан интерпретатору без загрузчика модулейвстречается только при прямом встраивании вычислителя; используйте facade::eval_file/eval_source, которые грузят модули

Анализ и валидация (E05xx / W05xx)

КодСмыслКак чинить
W0501неиспользуемая переменнаямёртвый код — удалите
W0502неиспользуемый импорт
W0503неиспользуемая функция/типдля API пакета — пометьте pub
E0504необъявленная переменнаяобъявление должно предшествовать использованию
E0505env() или read_file() при --hermeticпередать значение снаружи либо снять флаг и выдать право
E0511отсутствует поле, требуемое схемой
E0512тип поля не совпал со схемойInt и Float — разные типы
E0513лишнее поле (только --strict)уберите поле либо добавьте в схему
E0514значение не входит в enumподсказка предлагает ближайший член и перечисляет набор (D18)
E0515инвариант схемы не выполняется для этого экземплярасобственный assert схемы; показано его же сообщение
E0516значение по умолчанию, которое поле принять не можетпроверяется там, где схема объявлена, а не там, где используется
W0512эффектный вызов в импортированном модулеу импортов нет I/O-прав; пересмотрите дизайн пакета
W0513нулевое поле заполняется из get(key) или env(name) без значения по умолчаниюотсутствие тихо станет null; задайте значение по умолчанию или уберите ?
E0530провал assertсообщение — ваше собственное
E0531вызван fail(...)

Сериализация (E06xx)

КодСмыслКак чинить
E0601функция/схема внутри выводимого деревапуть ключа — в сообщении; на верхнем уровне pub-элементы исключаются сами
E0602не-конечный Float (NaN/Inf)
E0603ограничение формата (TOML: нет null, корень — объект)
E0604два ключа сплющиваются в один ключ json-flatключ с точкой неотличим от вложенного пути; взять --format json либо переименовать ключ